Agent skill

Recap Ask

by sd0xdev in sd0xdev/sd0x-harness

Interactive Q&A over an existing recap document. An agent skill from sd0xdev/sd0x-harness.

MITAuto-check passedDevelopment

Install Recap Ask

skills CLI
$ npx skills add sd0xdev/sd0x-harness --skill recap-ask -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install sd0xdev/sd0x-harness recap-ask --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/sd0xdev/sd0x-harness.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/recap-ask .claude/skills/recap-ask && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
recap-ask
GitHub stars
192
Token cost
~3k tokens
SKILL.md length
1,135 words
Files
2 (incl. references)
Skills in repo
91
Repo updated
First seen
Licence
MIT

At a glance

Interactive Q&A over an existing recap document. An agent skill from sd0xdev/sd0x-harness.

  • Works in 4 steps: Context Load → Intent Classification → Synthesis + Redact + Emit → …
  • : user wants to ask follow-up questions about a briefing-recap-<date.md produced by /recap-doc
  • SKILL.md covers Trigger, When NOT to Use, Command Signature and Workflow, plus 6 more sections
  • Calls git; needs FEATURE_KEY

What it does

Recap Ask is an agent skill from sd0xdev/sd0x-harness. Interactive Q&A over an existing recap document. Use when: user wants to ask follow-up questions about a briefing-recap-<date.md produced by /recap-doc, with recap-bounded context + out-of-scope redirect + optional promote-to-request. Not for: generating a new recap (use /recap-doc), general project Q&A (use /ask), code tracing (use /code-explore). Output: per-turn answer referencing file:line + end-of-session promote prompt.

Its SKILL.md is about 3k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files, including reference files (for example `references/qa-prompt.md`).

It sits in Development, covering Domain-driven design. The repository describes itself as: The harness layer for Claude Code — a reference implementation of harness engineering with hook-enforced dual review, state-machine gates that survive context compaction, and… The licence is MIT.

When your agent uses it

  • : user wants to ask follow-up questions about a briefing-recap-<date.md produced by /recap-doc
  • With recap-bounded context + out-of-scope redirect + optional promote-to-request

Example prompts

  • “/recap-ask”

Requirements

  • A credential in FEATURE_KEY
  • Pre-approved tools (allowed-tools): Read, Grep, Glob, Bash(git:*), Bash(node:*), Skill, AskUserQuestion, Write

Workflow steps

4 steps, taken from the step headings in SKILL.md.

  1. Context Load
  2. Intent Classification
  3. Synthesis + Redact + Emit
  4. Promote (end of session)

What it can do on your machine

Read from SKILL.md and the folder at commit c9a2036. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves these tools, so the agent can use them without asking each time:

    • Read
    • Grep
    • Glob
    • Bash(git:*)
    • Bash(node:*)
    • Skill
    • AskUserQuestion
    • Write

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • git

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use git, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names these keys or tokens, usually read from environment variables:

    • FEATURE_KEY

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Recap Ask loads about 3k tokens when it runs, and up to ~4.8k if it reads all its reference files. Until then it costs about 110 tokens; SKILL.md has 1,135 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~110
When it runs · the whole SKILL.md, loaded when a task matches
~3k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~4.8k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from sd0xdev/sd0x-harness at commit c9a2036, republished under its MIT licence (© sd0xdev). 1,135 words, ~2,954 tokens.

Download SKILL.mdSave it as .claude/skills/recap-ask/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
recap-ask
description
Interactive Q&A over an existing recap document. Use when: user wants to ask follow-up questions about a briefing-recap-<date>.md produced by /recap-doc, with recap-bounded context + out-of-scope redirect + optional promote-to-request. Not for: generating a new recap (use /recap-doc), general project Q&A (use /ask), code tracing (use /code-explore). Output: per-turn answer referencing file:line + end-of-session promote prompt.
allowed-tools
Read, Grep, Glob, Bash(git:*), Bash(node:*), Skill, AskUserQuestion, Write

/recap-ask — Recap-Bounded Q&A

Trigger

  • Keywords: recap-ask, ask about recap, 追問 recap, follow-up on recap, 本輪問答

When NOT to Use

ScenarioAlternative
Generate a new recap doc from scope/recap-doc
Full flow (detect + doc + Q&A)/post-dev-recap wrapper
General project Q&A, no recap in hand/ask
Deep multi-source investigation/deep-research
Systematic code tracing across modules/code-explore
First-principles reasoning about a doc/fp-brief

Command Signature

/recap-ask <question> --context <recap-doc-path> [--continue <threadId>] [--lazy-fetch]
FlagDefaultDescription
<question>requiredFree-text user question
--contextrequiredAbsolute or repo-relative path to a briefing-recap-<YYYY-MM-DD>.md file
--continuenullReuse an existing Codex threadId for follow-up turns
--lazy-fetchtrueAllow Read on files listed in the recap §7 Evidence during synthesis. When false, Codex answers from recap text only (no code-verification reads); citations still reference <path>:<line> from §7 but are not re-opened

Workflow

mermaid
sequenceDiagram
    participant U as Caller (user or /post-dev-recap)
    participant A as /recap-ask
    participant R as Recap doc
    participant C as Codex
    participant SR as scripts/security-redact.js
    participant CR as /create-request

    U->>A: /recap-ask "<q>" --context <path>
    A->>A: Phase 1: Validate path + load recap as primary context
    A->>A: Phase 2: Intent classification → {recap-scoped, out-of-scope, ambiguous}
    alt recap-scoped
        A->>R: Lazy-fetch file:line refs (bounded by recap Evidence)
        A->>C: Codex synthesis with recap as primary
    else out-of-scope
        A->>A: Emit "此問題超出本輪 recap 範圍" + /ask example
    else ambiguous
        A->>U: AskUserQuestion to clarify intent
    end
    A->>SR: Phase 3: Redact response
    SR-->>A: Redacted text (abort on high-confidence secret)
    A->>U: Emit answer with file:line citations
    opt End of session
        A->>U: Prompt: "Promote this Q&A to a request ticket?"
        U-->>A: Yes
        A->>CR: /create-request --update <existing> (append Q&A digest)
    end
Phase 1 — Context Load
  1. Validate --context path: resolve relative paths against repo root (git rev-parse --show-toplevel).

  2. Enforce path boundary (NFR-8) on --context: resolved real path must satisfy startsWith(repo_root + "/") or live under <tmp> (same allowlist as /recap-doc Path Security — users who moved the recap out of sd0x-dev-flow-recap/ must still land within tmp). Reject .. segments and external symlinks (use fs.realpathSync on the first existing ancestor).

  3. Read the recap file in full; this is the primary context. Extract the §7 Evidence file-index as the lazy-fetch allowlist.

  4. Validate every Evidence entry before adding to the allowlist: apply the same boundary check to each <path>:<line> in §7 — the canonical (realpath-resolved) target must satisfy startsWith(repo_root + "/") or lie inside <tmp> (i.e. repo-or-<tmp>, identical to step 2), with .. segments and external symlinks rejected. Entries that fail validation are silently dropped from the allowlist (a recap cannot smuggle out-of-repo paths into Phase 3 reads). 4b. scan_error gate: read the recap's > **Corpus scan**: metadata line (written by /recap-doc from feature_context.scan_error). Only the exact value complete proceeds. Every other reading takes the ⚠️ Need Human exit, and each one takes it on its own account:

    MarkerReadingConsequence
    completethe recap records scan_error === falseproceed to Phase 2
    unknownthe recap records scan_error !== false — the source sets behind it are unknown, not emptysay so, ⚠️ Need Human exit
    absentthe recap predates the field, so nothing was recorded either waysay so, ⚠️ Need Human exit
    anything elsean unrecognised producer wrote it; the value means nothing heresay so, ⚠️ Need Human exit

    The absent row is the one that reads as pedantic and is not. Silence is the default state of every recap written before the marker existed, so "warn and answer anyway" is not a lenient reading of one edge case — it is the fail-open path for the whole back catalogue, and it is precisely the misreading the marker was added one document upstream to close. An answer built on an evidence index whose corpus completeness is unknown is the failure, whether the recap said unknown or said nothing.

    Gate on !== false, not === true, and on === 'complete' rather than "not unknown": a payload from a shell fallback or an older producer carries no such field at all, and a non-null key is not evidence the sets are complete — scan_error rides alongside a resolved key.

  5. If the recap is older than 7 days, warn the user — recaps are ephemeral by default and the source code may have drifted. The 7-day threshold is a heuristic; callers may override in future versions.

Phase 2 — Intent Classification

Classify the question into one of three classes before synthesis. See references/qa-prompt.md for full prompt + decision rules.

ClassSignalAction
recap-scopedQuestion refers to files / decisions / terms that appear in the recapProceed to synthesis. Lazy-fetch referenced files via the §7 allowlist only.
out-of-scopeQuestion clearly targets code or docs not covered by the recapEmit the fixed redirect block (see below) — no Codex synthesis.
ambiguousPartial overlap, unclear whether recap covers itTrigger AskUserQuestion with 2-3 framed options to disambiguate.

Out-of-scope redirect block (verbatim template — keep concise):

此問題超出本輪 recap 範圍。建議改用 /ask "<原始問題>",它會從整個專案重新收集上下文。

Follow-up turns on the same thread (--continue <threadId>) re-run classification per new question — the prior turn's class does not carry over. The Codex reply-turn prompt in references/qa-prompt.md enforces this.

Show full SKILL.md (460 more words)Show less
Phase 3 — Synthesis + Redact + Emit

Bind every placeholder before writing prompt.md — the template is body-only and evaluates nothing. ${FEATURE_KEY} becomes session when the recap resolved no feature key.

  1. For recap-scoped: dispatch to Codex per @skills/codex-code-review/references/codex-transport.md § Start (first turn) or its § Resume (subsequent turns). Prompt must follow @rules/codex-invocation.md — independently research, no leading conclusions. See references/qa-prompt.md.
  2. Lazy-fetch is gated: Codex may Read only files listed in the recap §7 Evidence. Out-of-allowlist reads are refused; fall back to emitting a citation-only answer.
  3. Run the complete response through scripts/security-redact.js → redact(text). On AbortError (high-confidence secret) emit the fingerprint and refuse to respond.
  4. Emit the redacted answer with inline file:line citations. Every claim about code must cite a recap-evidenced location.
Phase 4 — Promote (end of session)

When the user signals session end (e.g. /recap-ask --end or an explicit "結束" / "done"):

  1. Prompt via AskUserQuestion: "Promote this Q&A thread to the existing request ticket so the context survives for future sessions?"
  2. On Yes: resolve the parent request doc from the recap's feature_context.docs_path. Invoke /create-request --update <request-path> with a Q&A digest appended under a new ## Follow-up Q&A (<date>) heading.
  3. On No: emit the thread id so the user can resume later via --continue.

Performance

Target: NFR-3 — Q&A first-token p95 ≤ 10s (excluding external LLM network latency, measured from question receipt to first emitted token). Phase 1 context load should be cached across turns within the same thread.

Path Security

RuleImplementation
Context path boundaryfs.realpathSync on first existing ancestor; reject if the resolved ancestor is neither inside the repo root (git rev-parse --show-toplevel) nor inside <tmp> (same allowlist as /recap-doc)
Lazy-fetch allowlistOnly files appearing in the recap's §7 Evidence index; no arbitrary Read during synthesis
Symlink guardReject any ancestor whose real path escapes both roots
Secret redaction (NFR-7)Every outbound response run through scripts/security-redact.js — abort on high, mask on medium
Input trustTreat --context as untrusted; no shell interpolation

Output Format

Each Q&A turn emits:

### Q: <user question>

**Intent**: recap-scoped | out-of-scope | ambiguous

**Answer**:
<synthesized text with inline `file:line` citations>

**Sources**:
- `<path>:<line>` — <what this ref demonstrates>
- ...

**Thread**: <codex threadId>   <!-- enables --continue -->

On session end, append:

### Promote?

Promote this Q&A thread to `<parent-request-path>` so the context survives future sessions? (y/N)

Verification

  • --context path validated against repo-or-tmp allowlist before any read (NFR-8)
  • Recap doc loaded in full; §7 Evidence extracted as the lazy-fetch allowlist
  • Intent classification emits exactly one of recap-scoped / out-of-scope / ambiguous
  • Out-of-scope path emits the fixed redirect block — no Codex call
  • security-redact.js run on every outbound response (NFR-7)
  • Codex prompt follows @rules/codex-invocation.md (independent research mandate)
  • First-token p95 ≤ 10s from receipt (NFR-3)
  • Promote prompt at session end; /create-request --update call on Yes (AS-11)

References

  • references/qa-prompt.md — Codex prompt + intent classification rules (obeys @rules/codex-invocation.md)
  • @skills/ask/SKILL.md L76-92 — Phase 2 context-gathering pattern (upstream reuse anchor, NFR-5)
  • @skills/recap-doc/SKILL.md — Upstream producer of recap doc (Evidence §7 defines the lazy-fetch allowlist)
  • scripts/security-redact.js — Pre-emit secret redaction (T1)
  • scripts/detect-scope.js — ScopeReport v1 (consumed indirectly via the recap's feature_context)
  • @rules/codex-invocation.md — Codex must independently research; no leading conclusions
  • @rules/auto-loop.md — Fix → re-review → pass loop

Examples

Input: /recap-ask "Why did we gate the watcher on --interval?" --context /tmp/sd0x-dev-flow-recap/briefing-recap-2026-04-17.md
Action: Load recap → classify recap-scoped → Codex reply citing recap §3 Design Decisions entries → redact → emit answer with file:line refs

Input: /recap-ask "How does the router module work?" --context docs/features/post-dev-recap/briefing-recap-2026-04-17.md
Action: Load recap → router not in §2/§7 → classify out-of-scope → emit redirect block pointing to /ask — no Codex call

Input: /recap-ask "Does this affect auth?" --context ...
Action: Load recap → ambiguous (auth mentioned in §5 Blind Spots but not explained) → AskUserQuestion: "Which auth path — the scope-file write permission, or the downstream Codex auth?"

© sd0xdev, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 1 other file (references) in skills/recap-ask of sd0xdev/sd0x-harness.

  • SKILL.md
  • references/qa-prompt.md

Open the folder on GitHubat commit c9a2036

Compare with similar skills

Recap Ask next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Recap Ask compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Recap Ask this skillsd0xdev/sd0x-harness192—~3kAutomated safety check: PassMIT
Domain Modelingfossasia/eventyay-interpretation1.6k29 repos~821Automated safety check: PassApache-2.0
Architecture Governancezai-org/ZCode7.5k—~1.2kAutomated safety check: PassApache-2.0
Evolutionary Modular Architecturetech-leads-club/agent-skills7k—~3.7kAutomated safety check: PassCC-BY-4.0
Domain Modelingbrim-borium/spotify_sdk1665 repos~806Automated safety check: PassApache-2.0
Domain Modeling and Glossarywindmill-labs/windmill18k—~622Automated safety check: PassCustom licence

Similar skills

  • Domain Modeling

    fossasia/eventyay-interpretation

    Build and sharpen a project's domain model. An agent skill from fossasia/eventyay-interpretation.

    1.6k GitHub starsUsed in 29 repos~821 tokens
    DevelopmentAuto-check passed
  • Apply the repository's architecture policy to code changes by generating a bounded context package, checking module and layer boundaries, and reporting baseline-aware violations.

    7.5k GitHub stars~1.2k tokensUpdated 8 days ago
    DevelopmentAuto-check passed
  • Evolutionary Modular Architecture

    tech-leads-club/agent-skills

    Guides design of modular-monolith platforms with DDD, flat-by-aggregate modules, anti-corruption layers, outbox events and resilience, plus an architecture document with SVG diagrams.

    7k GitHub stars~3.7k tokensUpdated 17 days ago
    DevelopmentAuto-check passed
  • Domain Modeling

    brim-borium/spotify_sdk

    Build and sharpen a project's domain model. An agent skill from brim-borium/spotify_sdk.

    166 GitHub starsUsed in 5 repos~806 tokens
    DevelopmentAuto-check passed
  • Domain Modeling and Glossary

    windmill-labs/windmill

    Actively challenges vague or conflicting terminology as you design, and keeps a living domain glossary file up to date in real time.

    18k GitHub stars~622 tokensUpdated today
    DevelopmentAuto-check passed
  • Ddd

    swamp-club/swamp

    Domain Driven Design guidance for TypeScript/Deno codebases.

    642 GitHub stars~1.4k tokensUpdated today
    DevelopmentAuto-check passed

More from sd0xdev/sd0x-harness

All 91 skills in this repo
  • Adr

    sd0xdev/sd0x-harness

    Write an Architecture Decision Record (ADR) for a feature — Context / Decision / Status / Consequences / Alternatives, filed as docs/features/<feature/adr-<NNN-<title.md with a 3-digit zero-padded…

    192 GitHub stars~4.8k tokensUpdated yesterday
    Auto-check passed
  • Load PR Review

    sd0xdev/sd0x-harness

    Load GitHub PR review comments into AI session — analyze, triage, plan.

    192 GitHub stars~4.4k tokensUpdated yesterday
    Auto-check passed
  • Next Step

    sd0xdev/sd0x-harness

    Change-aware next step advisor. An agent skill from sd0xdev/sd0x-harness.

    192 GitHub stars~1.6k tokensUpdated yesterday
    Auto-check passed
  • Obsidian CLI

    sd0xdev/sd0x-harness

    Obsidian vault integration via official CLI. An agent skill from sd0xdev/sd0x-harness.

    192 GitHub stars~1.1k tokensUpdated yesterday
    Auto-check passed
  • Orchestrate

    sd0xdev/sd0x-harness

    Agent-driven workflow orchestration (v1 report-only). An agent skill from sd0xdev/sd0x-harness.

    192 GitHub stars~2.5k tokensUpdated yesterday
    Auto-check passed
  • PR Comment

    sd0xdev/sd0x-harness

    Post friendly review comments to a GitHub PR — prepare locally, preview, then submit as atomic review.

    192 GitHub stars~1.5k tokensUpdated yesterday
    Auto-check passed

Categories

Questions about Recap Ask

What does Recap Ask do?

Interactive Q&A over an existing recap document. An agent skill from sd0xdev/sd0x-harness. Recap Ask is an agent skill from sd0xdev/sd0x-harness. Interactive Q&A over an existing recap document.

When should I use Recap Ask?

Recap Ask fits situations like: : user wants to ask follow-up questions about a briefing-recap-<date.md produced by /recap-doc; with recap-bounded context + out-of-scope redirect + optional promote-to-request.

How do I install Recap Ask in Claude Code?

Run `npx skills add sd0xdev/sd0x-harness --skill recap-ask -a claude-code`. Or copy the skill folder (skills/recap-ask in sd0xdev/sd0x-harness) into .claude/skills/recap-ask in your project. Claude Code loads it when a task matches its description.

How do I install Recap Ask in Codex?

Run `npx skills add sd0xdev/sd0x-harness --skill recap-ask -a codex`. Or copy the skill folder (skills/recap-ask in sd0xdev/sd0x-harness) into .agents/skills/recap-ask in your project. Codex loads it when a task matches its description.

Can I use Recap Ask in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add sd0xdev/sd0x-harness --skill recap-ask -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/recap-ask, .gemini/skills/recap-ask, .github/skills/recap-ask and .opencode/skills/recap-ask in your project.

What does Recap Ask need to run?

Going by SKILL.md and its folder, Recap Ask needs the command-line tools its instructions call (git) and credentials named FEATURE_KEY. Our summary lists: A credential in FEATURE_KEY. Its frontmatter pre-approves these tools: Read, Grep, Glob, Bash(git:*), Bash(node:*), Skill, AskUserQuestion, Write.

Does Recap Ask access the network?

SKILL.md contains no URLs. Its commands use git, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Recap Ask safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Recap Ask use?

Recap Ask is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Recap Ask use?

About 3k tokens (SKILL.md is roughly 12k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 1.8k tokens, read only when the agent opens those files.

What are the alternatives to Recap Ask?

Skills that share tags, products or a category with Recap Ask: Domain Modeling (fossasia/eventyay-interpretation, 1.6k stars), Architecture Governance (zai-org/ZCode, 7.5k stars), Evolutionary Modular Architecture (tech-leads-club/agent-skills, 7k stars) and Domain Modeling (brim-borium/spotify_sdk, 166 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Recap Ask?

sd0xdev (a GitHub user) maintains it in sd0xdev/sd0x-harness, which has 192 GitHub stars. The repository holds 91 skills in this directory. The repository was last updated on October 6, 2026.

Source: sd0xdev/sd0x-harness on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.