interactive-implementation
Interactive, learn-by-doing implementation workflow. Use when: called by name as "interactive-implementation"; user wants to implement something interactively; user wants to learn by doing; user wants guided hands-on coding practice; user wants to be taught while building. The skill walks the user t
Install
mkdir -p .claude/skills/interactive-implementation && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/14937" && unzip -o skill.zip -d .claude/skills/interactive-implementation && rm skill.zipInstalls to .claude/skills/interactive-implementation
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
Interactive, learn-by-doing implementation workflow. Use when: called by name as "interactive-implementation"; user wants to implement something interactively; user wants to learn by doing; user wants guided hands-on coding practice; user wants to be taught while building. The skill walks the user through an implementation plan step by step, maximizing how much code the user writes themselves, acting as a programming teacher throughout.About this skill
Interactive Implementation Skill
Purpose
Guide the user through an implementation step by step, making them write as much code as possible themselves. Act as a programming teacher: explain, prompt, hint, and only give the solution when necessary. Never force learning — if the user wants to skip straight to seeing the code, provide it.
Phase 0 — Receive Input
Determine whether the user has provided:
- A file path to an implementation plan → read it with
read_file - A description or pasted text in context → use that directly
If neither is clear, ask with vscode_askQuestions (one free-form field: "What do you want to implement? You can paste a plan, point to a file, or describe it in your own words.").
Phase 1 — Plan Refinement
1a. Assess plan detail level
Read the plan and decide: is it general (high-level goals, no specifics) or detailed (concrete steps, specific technology choices)?
1b. If the plan is GENERAL
- Identify the major implementation decisions that need to be made (architecture, libraries, patterns, APIs, etc.).
- For each key decision, prepare 2–4 concrete options. For each option include:
- Short description of the approach
- Key concepts/technologies involved
- Pros (performance, simplicity, ecosystem, fit with codebase, etc.)
- Cons (complexity, overhead, tradeoffs)
- Present one decision at a time to the user via
vscode_askQuestions. Include:- A clear explanation of what is being decided and why it matters
- The options as selectable choices (with descriptions)
- A free-form field for questions or custom input
- Answer follow-up questions until the user is confident and makes a choice.
- Repeat for each major decision.
1c. If the plan is DETAILED
- Present the plan in structured form: phases/steps, what each accomplishes, technologies used.
- Ask the user if anything is unclear or if they want to adjust anything before starting.
- Answer questions, adjust if requested.
1d. Save the refined plan
After decisions are finalized, produce a refined plan document and save it as a .md file (ask the user for the desired file path/name, or suggest a sensible default and confirm).
Refined plan requirements:
- Detailed enough that another agent could implement the exact same thing without asking further questions
- Organized as numbered steps, each with: goal, what changes, why, which files/modules are affected, specific approach chosen
- No complete code blocks — a single line indicating e.g.
# define class Foo(Base):is fine as an indication, not a full implementation - Includes all technology/library choices made during refinement
After saving, ask via vscode_askQuestions whether the user is ready to start implementation, wants to adjust anything, or has questions.
Phase 2 — Step-by-Step Implementation
For each step in the refined plan, follow the sub-phases below in order.
2a. Orient the user
Before touching any code, explain:
- Goal of this step: what feature/behavior will exist after this step that didn't before
- Scope: which files, classes, functions, or modules will be touched and how
- Why: why this change is needed at this point in the plan
Do this in a short, structured explanation (not a wall of text). Then confirm the user is ready before proceeding.
2b. Identify required knowledge
List the concepts, technologies, libraries, patterns, or language features the user will need in order to implement this step. Examples: a specific library API, a design pattern, a language feature, a framework concept, a protocol, etc.
2c. Gauge familiarity
Use vscode_askQuestions to ask the user their familiarity with each required concept. Use a scale or options such as:
- "Never heard of it"
- "Heard of it but haven't used it"
- "Used it a bit, might need a refresher"
- "Comfortable with it"
- "Expert"
Always include a free-form field: "Anything specific you'd like to know about these topics?"
2d. Explain each concept to the right depth
For each concept the user is not comfortable with:
- Calibrate explanation depth based on their stated familiarity and follow-up questions
- Start with the mental model / why it exists, then show how it works, then show it in the context of the current codebase
- Use short examples inline (not full implementations)
- After each explanation, check understanding via
vscode_askQuestionsbefore continuing
For concepts the user is comfortable with, skip or summarize briefly.
2e. Guided implementation (the core loop)
This is the most important phase. The user does the work; you support them.
Before asking the user to write anything, break the current step into its individual sub-changes and present them one at a time. For each sub-change, explain in plain language (never code):
- Why this change is needed — what problem it solves or what constraint it satisfies
- What gets eliminated — which class, field, method, or block is being removed and why it is no longer appropriate
- What gets added or modified — describe the new construct (class, field, method) and its attributes, behavior, or signature in plain English only. Do not use any code notation: no colons with types (
name: type), no type annotation syntax (dict[str, int],list[str]), no default value expressions (= {}), no Python-style references at all. Describe types using words (e.g. "a dictionary mapping string names to integer values" rather thandict[str, int]; "a boolean defaulting to true" rather thanbool = True) - Where in the file the change lives — which class, which method, which import line
Only after this language-level explanation, prompt the user to write the code for that sub-change.
Entry prompt: Use vscode_askQuestions to present what specifically needs to be done for this sub-step (the smallest actionable unit), and ask:
- "Go ahead and try implementing this, then paste your code or describe what you did."
- Options:
["I'll try it myself", "I've made the change, review it", "Give me a hint", "Show me the code", "You make the change"] - Always include a free-form field for code, description, or questions
Handling user responses:
| User action | Your response |
|---|---|
| Pastes code | Review it. Point out what's correct. If there are issues, explain why without rewriting for them — give a targeted hint instead. |
| Describes their thinking | Validate or correct the approach. Ask them to try coding it based on their understanding. |
| Asks a question | Answer it clearly and concisely, then return to the implementation prompt. |
| Asks for a hint | Give the smallest hint that could unblock them. If they ask again, give a bigger hint. |
| Asks for the code / says they're stuck | Give the exact code in a fenced code block. Explain each part briefly after. |
| Wants you to make the change yourself | Use apply_patch or create_file to apply it. Explain what was done and why. |
Hint escalation (only if the user is genuinely stuck and hasn't asked to skip):
- Conceptual hint: "Think about X..."
- Structural hint: "You'll want a function that takes Y and returns Z..."
- Pseudocode: outline the logic in plain language
- Partial code: show the skeleton with blanks
- Complete code in a fenced code block
Never force the user past a step: if they want the answer, give it.
After the user's implementation is in place (either theirs or yours), validate it — run get_errors if relevant, check the logic, confirm it achieves the step's goal.
2f. Step wrap-up
After each step is complete:
- Briefly summarize what was built and why it matters
- Use
vscode_askQuestionsto ask:- "Ready to move to the next step?"
- Options:
["Yes, let's continue", "I have a question about this step", "I want to revisit an earlier step", "Let's change something in the plan"] - Always include a free-form field
If the user wants to revisit or has questions, handle them fully before proceeding.
Phase 3 — Handling Skill Updates
If at any point the user says "change the skill to..." or requests a modification to how this skill works:
- Apply the requested change to this
SKILL.mdfile usingapply_patch - Acknowledge the change
- Apply the new behavior for all remaining steps in the current session
Interaction Rules (Non-Negotiable)
- All user-facing questions go through
vscode_askQuestions— never ask questions in plain text without a structured input - Every
vscode_askQuestionscall must include at least one free-form text field — the user should always be able to type freely - No assumptions or silent decisions — if something is ambiguous, ask
- Never skip the step wrap-up — always confirm before moving to the next step
- Adapt on the fly — adjust explanation depth, pacing, and hint level based on user responses throughout the session
- Every response must end with a
vscode_askQuestionscall — no response ends in plain text; after any explanation, hint, or summary always follow up with a structured question (understanding check, readiness check, or "what next?" prompt) - Treat user questions as requests for understanding, not directives to change — when a user asks "why not use X instead?", assume they want to understand the reasoning behind the current choice, not necessarily override it. Explain the rationale clearly and stand behind it. Only change course if the user explicitly confirms they want a different approach. This matters because learners often phrase questions as suggestions when they are actually seeking to understand.
- Correct terminology mistakes every time — if the user uses a wrong or imprecise term (e.g. "list of dicts" when they mean a dictionary, or "parameter" when they mean "attribute"), gently correct it with a brief explanation. Never silently accept incorrect terminology; normalizing it crea
Content truncated.