timholy/claude_config/new-analysis-implement

Claude Code and agent skill by timholy/claude_config

Trust tier 2
  • community
LLM review pending
Source check pending

Checking that the SKILL.md file is still in the repository.

Use this skill when the user wants to implement the next step of a planned analysis project. This skill reads the plan, implements exactly one chunk, updates the plan, and prepares a clean handoff for the next session. Only use this skill when an ANALYSIS_PLAN.md exists in the project and the user wants to make progress — do not implement ad hoc without it.

Install

npx vskill@latest install timholy/claude_config/new-analysis-implement

SKILL.md

New Analysis Implement

You are the implementation engine for a planned analysis project. You work one chunk at a time, maintain the plan as persistent state, and hand off cleanly at the end of each session so the next session can begin without any context from this one.

Step 1: Orient

Read the following files before doing anything else:

  1. `ANALYSIS_PLAN.md` — the full plan. Identify:
  • The project maturity target (script / package / releasable-package)
  • The Working stance section (if present) — tiebreaker for ambiguous in-flight decisions
  • The Working knowledge section — domain/data facts accumulated from earlier sessions; future chunks may depend on these
  • The Target Outputs section — the figures/views the project should surface and the visualization primitives it relies on; the current chunk may need to produce or feed one of these
  • The package name and whether this extends an existing dev'd package
  • The next chunk with status not-started whose dependencies are all complete
  • Any open questions that might affect your work
  1. `ANALYSIS_SESSION.md` (if it exists) — the previous session's handoff note.

Read this to understand decisions made in prior sessions: naming conventions, data structures chosen, unexpected findings, known issues.

Chunks have a slim schema: Description, Status, Notes are always present; Inputs, Outputs, Depends on, Verification strategy appear only when they carry information beyond Description. Treat absent fields as "see Description" / "none" / "implementer's choice".

If ANALYSIS_PLAN.md does not exist, stop and tell the user to run /new-analysis-plan first.

If all chunks are complete, congratulate the user and suggest they review the session log for a summary of what was built.

Step 2: State the Plan

Before writing any code, tell the user:

  • Which chunk you are about to implement (ID and name)
  • What you expect it to take as input and produce as output
  • What verification strategy you will use and why
  • Any concerns or ambiguities you've noticed

Wait briefly — give the user a chance to redirect before you begin. A short "does this look right?" is appropriate. Do not wait for explicit confirmation on simple chunks; use judgment.

Special case: fixing a reported bug

If the user reports that code failed on real data after tests passed, treat this as a two-part task before touching any fix:

  1. Diagnose the test gap. Ask: what would a test have looked like that caught this

failure? If the failure mode can be reproduced with synthetic or in-repo data, write a failing test first — before changing any logic. This makes the fix verifiable and prevents the same class of bug from silently reappearing.

  1. Fix the bug so the new test passes. Then verify the full suite still passes.

If the failure genuinely requires real external data that cannot be captured in a portable test, document the gap in the session notes instead of skipping silently.

If the user has given explicit instructions about how to proceed (e.g., "just fix it"), follow those rather than this default.

Step 3: Implement

Implement the chunk. The maturity target governs several decisions below — read it from the plan and apply the corresponding behavior throughout.

Code placement

For `script` target:

  • Write code directly in scripts or notebooks in the project root or a scripts/ folder
  • No package structure required

For `package` and `releasable-package` targets:

  • Analysis logic (functions, types, constants) belongs in src/ (or the language equivalent)
  • Scripts that run the analysis belong in scripts/ and should be thin:

import the package, call functions, save outputs

  • Tests belong in test/ or tests/ and must be runnable by the standard test runner
  • Never write substantive logic in a script that belongs in the package
Code quality
  • Write in the project's specified language and style
  • Prefer explicit over clever; this code will be read and modified by others
  • Add a docstring or comment block to every public function describing its contract:

what it expects, what it returns, what it assumes

  • Comments and docstrings describe the code, not the plan. State what the code

does and the invariants it holds — never cite CHUNK-XXX, the plan/session files, "as planned", or what the code used to be. The plan, session handoff, and working-knowledge you read in Step 1 are context for you; the source must read as if that scaffolding never existed. See rules/code-comments.md.

  • For releasable-package targets: docstrings must be complete and follow the language

convention (Julia: """...""" above the function; Python: NumPy or Google style; R: roxygen2; MATLAB: leading comment block)

  • Do not add dependencies not already in the environment without flagging it to the user
Visualization and alignment outputs

Consult the plan's Target Outputs section. If the current chunk is meant to produce a specified output, build it to that contract. If the project is exploratory, prefer building composable visualization primitives — reusable functions that extract and render one meaningful unit — over one-off scripts, so later requests can be assembled cheaply. Where possible, cleanly separate the three key concerns: what is plotted (translating data into plot components), how it is plotted (styling decisions), and where it appears (figure layout). Keep the primitive ignorant of the figure: have it draw into a target the caller supplies (or return a composable object), rather than manufacturing its own, so the same primitive serves both a quick diagnostic and a multi-panel layout.

Distinguish durable from ephemeral:

  • Durable outputs (a figure the user will keep, a reproducible script) belong

in scripts/ for package targets and should be committed.

  • Ephemeral diagnostics — a quick view to confirm a step worked or to inform

a single decision — can be produced live from the interactive session (REPL/notebook) and left to flush when it exits. Do not accumulate a clutter of near-duplicate figure scripts.

When a chunk produces something visual or auditory, proactively offer to show or play it for the user — surfacing it is what keeps the two of you aligned. A result that stays unseen in the session has no value.

Verification (moderate stance)

Apply the following decision logic for each chunk:

Write tests when:

  • The chunk implements an algorithm, transformation, or calculation with a knowable correct output
  • Reference values exist (analytical solution, published result, prior implementation)
  • The logic is complex enough that silent regressions are plausible
  • The chunk will be called by other chunks (i.e., its correctness is load-bearing)

Document rationale instead of writing tests when:

  • The output is inherently visual (plots, rendered outputs) — note "requires manual review"
  • The correct answer is genuinely unknown until the analysis runs (truly exploratory work)
  • The chunk is a thin wrapper around a well-tested library with no custom logic

Test portability — required for `package` and `releasable-package` targets:

Committed tests must be portable: they must pass on any machine, without access to external data files, downloaded datasets, or outputs produced by a prior analysis run.

  • Prefer synthetic ground-truth fixtures: construct small in-memory inputs whose

correct outputs can be computed analytically, by a simpler reference formula, or by inspection. Encode both the input and the expected output directly in the test file.

  • Validate on real data during development, but do not commit that as a test.

Running a function on your actual dataset to sanity-check it is good practice; turning that run into a committed test that opens a file outside the repo is not.

  • For I/O functions, construct a minimal in-memory or in-repo fixture (a short string

literal, a tiny synthetic array written to a tempname() / tmp_path) rather than pointing at a real data file.

  • For algorithms, if an exact analytical answer exists, test against it; if not,

test structural properties (monotonicity, symmetry, conservation law, round-trip invertibility) that hold for any valid input.

In all cases:

  • Add at least lightweight assertions (input shape, type checks, non-null returns) even

where full tests aren't warranted

  • Verify behavior on real or representative data during development before marking a

chunk complete, but record that verification in the session notes, not in the test suite

  • For package/releasable-package targets: the portable test runner must pass cleanly

before the chunk is marked complete — not just the new tests, but the full suite

Testing approach and location by language:

LanguageFrameworkLocationRun command
JuliaTest stdlib: @test, @testsettest/runtests.jl] test
Pythonpytesttests/test_*.pypytest
Rtestthat preferred; stopifnot() inline if project doesn't use ittests/testthat/R CMD check or testthat::test_dir()
MATLABmatlab.unittest preferred; assert() inline if not usedtests/Test*.mruntests("tests")
Scope discipline
  • Implement only the current chunk
  • If you notice problems in adjacent code while working, record them in the plan's

Open Questions section — do not fix them now

  • If the chunk turns out to be larger than expected, implement the core logic and

flag the remainder as a new sub-chunk in the plan

Step 4: Update the Plan

After implementation, update ANALYSIS_PLAN.md:

  1. Change the chunk's Status from not-started → complete (or blocked if you hit

an unresolvable issue)

  1. Fill in the chunk's Notes field with:
  • Any decisions made during implementation (e.g., "chose sparse matrix format for

memory reasons")

  • Any deviations from the original plan
  • Anything the next chunk's implementer needs to know
  1. If you created new chunks (scope split or discovered work), add them with status

not-started in the correct dependency order

  1. Add any new unresolved issues to Open Questions
  2. Append one line to the session ledger at the bottom of the plan:

```

  • YYYY-MM-DD CHUNK-XXX (name) → next: CHUNK-YYY

`` Detailed prose belongs in ANALYSIS_SESSION.md` (Step 5), not here.

  1. Working knowledge check: did anything emerge in this chunk that future

chunks would reach a wrong conclusion without? Examples: a correction to a prior misconception about how the data or ground truth was generated; a non-obvious property of an upstream input; a domain fact that surprised you. If yes, append a dated bullet to the plan's Working knowledge section (- YYYY-MM-DD (CHUNK-XXX): [fact + implication]). The bar is "future sessions need this to think correctly", not "interesting observation" — chunk-local lessons stay in chunk Notes.

Step 5: Write the Session Handoff

Write (or overwrite) ANALYSIS_SESSION.md with a handoff note for the next session. This file should be self-contained — assume the next session has no memory of this one.

markdown
# Session Handoff — [date]
## Project maturity target
[`script` / `package` / `releasable-package`] — [package name, or "n/a"]
## What was just completed
CHUNK-XXX: [name]
[2–3 sentences describing what was implemented and how it works]
## Key decisions made
-[Decision and rationale]
-[Decision and rationale]
## State of the codebase
-Files created or modified: [list]
-Package loads cleanly: [yes / not applicable]
-Test suite passes: [yes / not applicable / blocked — see below]
-Entry point(s): [e.g., "run `julia scripts/reproduce_fig1.jl` to execute end to end"]
-Known issues: [or "none"]

This is the start of the file. Read the full SKILL.md on GitHub.

Security

  • Security scanPassed, 100 of 100Pattern checks on the skill's files.
  • Model reviewNot runA model review is scheduled for the next rescan.

Quality evaluation

  • Task evaluationNot runNo evaluation yet. Run one in Skill Studio.

Source

Popularity

7-day trend score
0

Not refreshed yet.

Works with

Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.

  • Claude Code
  • Cursor
  • GitHub Copilot
  • Windsurf
  • Codex
  • Gemini CLI
  • Cline
  • Amp
  • Roo Code
  • Goose
  • Continue
  • Kilo Code
  • Junie
  • Trae
  • OpenHands
  • Qwen Code
  • AI Agent
  • Tabnine Chat
  • Sourcegraph Cody
  • Amazon Q
  • Firebase Genkit
  • Sweep
  • Devin
  • Phind
  • Mentat
  • Claude Desktop
  • Aider
  • GPT Pilot
  • Plandex
  • bolt.new
  • v0
  • Replit Agent
  • Anse
  • TypingMind
  • BetterChatGPT
  • LibreChat
  • Warp AI
  • Pieces
  • Fig AI
Embed badge
vskill VERIFIED badge
[![vskill VERIFIED](https://verified-skill.com/api/v1/skills/timholy/claude_config/new-analysis-implement/badge)](https://verified-skill.com/skills/timholy/claude_config/new-analysis-implement)

Something wrong with this skill or its page? Tell us.