agentsclimarketplace

Deferred capture

Skill athola/claude-night-market/plugins/leyline/skills/deferred-capture

Defines the contract for deferred-item capture across plugins. Use when building or validating a plugin's deferred-capture wrapper or adding source labels.From its SKILL.md

Install
npx -y skills add athola/claude-night-market --skill deferred-capture

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

SKILL.md

4.1 KB, ~1.0k tokens by cl100k_base, as published. Nobody here has run it

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: session_id from the hook payload stdin (jq -r '.session_id'), fallback: UTC timestamp YYYYMMDD-HHMMSS
  • --artifact-path (str): Absolute path or $HOME-based path to source artifact
  • --captured-by (str): explicit (default) or safety-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

LabelColorPurpose
deferred#7B61FFUniversal query handle
war-room#B60205Source: war-room deliberation
brainstorm#1D76DBSource: brainstorming session
scope-guard#FBCA04Source: scope-guard deferral
feature-review#F9A825Source: feature-review
review#0E8A16Source: code/PR review
regression#D73A4ASource: skill regression
egregore#5319E7Source: 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-run outputs 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

What ships with it

Read from the repository

Just SKILL.md. No reference files, no scripts.

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.