Skills deferred-capture
install
source · Clone the upstream repo
git clone https://github.com/openclaw/skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/openclaw/skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/athola/nm-leyline-deferred-capture" ~/.claude/skills/openclaw-skills-deferred-capture && rm -rf "$T"
OpenClaw · Install into ~/.openclaw/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/openclaw/skills "$T" && mkdir -p ~/.openclaw/skills && cp -r "$T/skills/athola/nm-leyline-deferred-capture" ~/.openclaw/skills/openclaw-skills-deferred-capture && rm -rf "$T"
manifest:
skills/athola/nm-leyline-deferred-capture/SKILL.mdsource content
Night Market Skill — ported from claude-night-market/leyline. For the full experience with agents, hooks, and commands, install the Claude Code plugin.
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 -- a convention.
CLI Interface
Required arguments:
(str): Concise description. Becomes issue title after--title
prefix[Deferred]
(str): Origin skill. One of: war-room, brainstorm, scope-guard, feature-review, review, regression, egregore--source
(str): Why raised and why deferred--context
Optional arguments:
(str): Comma-separated additional labels beyond--labels
+ sourcedeferred
(str): Session ID. Canonical source:--session-id
env var, fallback: UTC timestamp$CLAUDE_SESSION_IDYYYYMMDD-HHMMSS
(str): Absolute path or--artifact-path
-based path to source artifact$HOME
(str):--captured-by
(default) orexplicitsafety-net
(flag): Print JSON output without creating issue--dry-run
Issue Template
Title:
[Deferred] <title>
Labels:
deferred + <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 |
|---|---|---|
| | Universal query handle |
| | Source: war-room deliberation |
| | Source: brainstorming session |
| | Source: scope-guard deferral |
| | Source: feature-review |
| | Source: code/PR review |
| | Source: skill regression |
| | 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.