
Deferred Capture
- 75 installs
- 325 repo stars
- Updated August 2, 2026
- athola/claude-night-market
Deferred-capture is an agent skill that defines the CLI and GitHub issue contract every night-market plugin deferred-capture wrapper must implement.
About
Deferred-capture is a meta specification skill for the athola/claude-night-market plugin ecosystem. It documents the shared contract every deferred-capture wrapper must follow so solo builders and small teams do not fork incompatible CLIs, labels, or issue titles when sessions defer follow-up work to GitHub. Use it when you are authoring a new plugin wrapper, validating an existing script against the standard, or extending the contract with additional source labels or template fields. The skill spells out required and optional arguments, session ID sourcing from CLAUDE_SESSION_ID, artifact paths, and dry-run JSON behavior without executing capture itself. That separation keeps agent planning skills honest: deferred items still land as uniform issues while explicit runtime paths stay in plugin scripts. Intermediate plugin maintainers get a checklist-aligned reference that pairs with ship-phase review when you audit wrappers before release.
- Required CLI: --title, --source (7 canonical origins), and --context with optional labels, session-id, artifact-path, ca
- Issue title format `[Deferred] <title>` with `deferred` label plus source-specific labels
- Source enum: war-room, brainstorm, scope-guard, feature-review, review, regression, egregore
- Capture modes explicit (default) vs safety-net for audit trails
- Specification-only—runtime capture stays in each plugin’s deferred_capture.py script
Deferred Capture by the numbers
- 75 all-time installs (skills.sh)
- Ranked #285 of 782 Skill Development skills by installs in the Skillselion catalog
- Security screen: MEDIUM risk (skills.sh audit)
- Data as of Aug 5, 2026 (Skillselion catalog sync)
npx skills add https://github.com/athola/claude-night-market --skill deferred-captureAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 75 |
|---|---|
| repo stars | ★ 325 |
| Security audit | 2 / 3 scanners passed |
| Last updated | August 2, 2026 |
| Repository | athola/claude-night-market ↗ |
What it does
Define and audit a consistent deferred-item capture CLI and GitHub issue format across Claude night-market plugins.
Who is it for?
Maintainers of claude-night-market plugins who are implementing, extending, or auditing deferred_capture.py-style wrappers and source labels.
Skip if: Live session capture (invoke the plugin’s deferred_capture.py directly) or one-off manual GitHub issues without a wrapper—those paths skip this contract spec.
When should I use this skill?
Building or validating a plugin's deferred-capture wrapper, or adding source labels and template fields to the night-market contract.
What you get
Wrappers and validations align on one CLI surface, canonical source labels, and `[Deferred]` issue titles so deferred work is traceable and ready for GitHub without re-reading ad-hoc plugin docs.
- Contract-aligned deferred-capture CLI behavior (required and optional flags documented)
- Standardized `[Deferred]` GitHub issue titles and label sets per source
- Validation notes comparing an existing wrapper to the specification
By the numbers
- 7 canonical --source values: war-room, brainstorm, scope-guard, feature-review, review, regression, egregore
- 3 required CLI arguments: --title, --source, --context
- 5 optional CLI arguments plus --dry-run flag
Files
Deferred Capture Contract
When To Use
- Building a new plugin deferred-capture wrapper
- Validating an existing wrapper against the contract
- Adding new source labels or template fields
When NOT To Use
- Capturing a deferred item at runtime (use the plugin
wrapper directly, e.g. scripts/deferred_capture.py)
- Creating GitHub issues manually
Specification that all plugin deferred-capture wrappers implement. Not a runtime dependency, just a convention.
CLI Interface
Required arguments:
--title(str): Concise description. Becomes issue title
after [Deferred] prefix
--source(str): Origin skill. One of: war-room, brainstorm,
scope-guard, feature-review, review, regression, egregore
--context(str): Why raised and why deferred
Optional arguments:
--labels(str): Comma-separated additional labels beyond
deferred and source
--session-id(str): Session ID. Canonical source:
$CLAUDE_SESSION_ID env var, fallback: UTC timestamp YYYYMMDD-HHMMSS
--artifact-path(str): Absolute path or$HOME-based
path to source artifact
--captured-by(str):explicit(default) orsafety-net--dry-run(flag): Print JSON output without creating issue
Issue Template
Title: [Deferred] <title>
Labels: deferred and <source>
Body:
Deferred Item
Source: <source> (session <session-id>) Captured: <YYYY-MM-DD> Branch: <current git branch> Captured by: <explicit|safety-net>
Context
<context argument verbatim>
Original Artifact
<artifact-path if provided, otherwise "N/A">
Next Steps
- [ ] Evaluate feasibility in a future cycle
- [ ] Link to related work if applicable
Label Taxonomy
| Label | Color | Purpose |
|---|---|---|
deferred | #7B61FF | Universal query handle |
war-room | #B60205 | Source: war-room deliberation |
brainstorm | #1D76DB | Source: brainstorming session |
scope-guard | #FBCA04 | Source: scope-guard deferral |
feature-review | #F9A825 | Source: feature-review |
review | #0E8A16 | Source: code/PR review |
regression | #D73A4A | Source: skill regression |
egregore | #5319E7 | Source: autonomous agent |
Duplicate Detection
Search: gh issue list --search "<title> in:title" --state open --json number,title
Compare: exact title match after stripping [Deferred] prefix and normalizing to lowercase.
Only open issues are checked. Re-filing a closed deferred item is intentional.
Output (JSON to stdout)
Created: {"status": "created", "issue_url": "...", "number": 42} Duplicate: {"status": "duplicate", "existing_url": "...", "number": 17} Error: {"status": "error", "message": "..."}
Compliance Test
Any wrapper can verify conformance with:
python3 scripts/deferred_capture.py \ --title "Test: compliance check" \ --source test \ --context "Automated compliance verification" \ --dry-run
Must output valid JSON with a status field.
Exit Criteria
- [ ] Compliance test passes:
deferred_capture.py --dry-runoutputs
valid JSON with a status field (created, duplicate, or error) for any conformant wrapper
- [ ] Created issues have title prefixed
[Deferred], carry both
the deferred label and the source label, and body matches the required template (Source, Captured, Branch, Captured by, Context, Original Artifact, Next Steps)
- [ ] Duplicate detection runs before creation: `gh issue list
--search "<title> in:title"` called and exact match (after stripping prefix and lowercasing) suppresses the new issue
- [ ] JSON written to stdout on every invocation; `{"status":
"created", "issue_url": "...", "number": N} on success, {"status": "duplicate", ...} on duplicate, {"status": "error", "message": "..."}` on failure
Related skills
How it compares
A meta contract for plugin uniformity, not an MCP server integration and not a substitute for each plugin’s runtime capture script.
FAQ
Who is deferred-capture for?
Plugin authors and reviewers in the Claude night-market stack who need one shared deferred-capture CLI and issue template across skills like war-room, brainstorm, and scope-guard.
When should I use deferred-capture?
Use it while building a new deferred-capture wrapper in Build/agent-tooling, when validating an existing wrapper before Ship/review, or when adding a new --source label or template field to the shared contract.
Is deferred-capture safe to install?
It is documentation and conventions only; review the Security Audits panel on this Prism page and treat any wrapper script that creates GitHub issues as code you should audit before granting network or secrets access.