From livespec-impl-beads
Freeform direct filing of an impl-side work item (bugs, refactors, tactical tasks). Required heavyweight authored skill per livespec/SPECIFICATION/contracts.md §"Heavyweight authored skills (6)". Filed records carry `origin: freeform` and `gap_id: null`. Invoke as `/livespec-impl-beads:capture-work-item`.
How this skill is triggered — by the user, by Claude, or both
Slash command
/livespec-impl-beads:capture-work-itemThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
The freeform direct-filing skill. Use this for bugs, refactors,
The freeform direct-filing skill. Use this for bugs, refactors,
tactical tasks, and anything else that doesn't trace back to a spec
rule. For spec-traceable items, use capture-impl-gaps instead.
livespec_impl_beads package on import path.Ask the user (one question at a time):
bug, feature, task, chore, epic.Optional follow-ups (skip-confirmable):
li- ids; empty list permitted.id_hint or null (default null).
Supplied via --spec-commitment-hint <id_hint> when the work-item
is being filed in response to a spec-side
spec_commitments.impl_followups[].id_hint declaration (per livespec
SPECIFICATION/contracts.md §"Implementation-plugin contract — the
10-skill surface" → "Work-item spec_commitment_hint field"). When
supplied, the resulting record's spec_commitment_hint MUST equal
the verbatim id_hint; when omitted, the field defaults to null
(the freeform case). This is the surface livespec's
unresolved-spec-commitment doctor invariant queries via
list-work-items --json to verify each declared spec→impl
commitment maps to a filed work-item.Show the user the assembled record and ask "file?". On yes, append:
from livespec_impl_beads._ids import new_work_item_id
from livespec_impl_beads.store import append_work_item
from livespec_impl_beads.types import WorkItem
from datetime import datetime, timezone
from pathlib import Path
item = WorkItem(
id=new_work_item_id(),
type=type_,
status="open",
title=title,
description=description,
origin="freeform",
gap_id=None,
priority=priority,
assignee=assignee,
depends_on=tuple(depends_on),
captured_at=datetime.now(tz=timezone.utc).isoformat(),
resolution=None,
reason=None,
audit=None,
superseded_by=None,
spec_commitment_hint=spec_commitment_hint, # str | None; None for freeform.
)
append_work_item(path=Path("work-items.jsonl"), item=item)
Print the assigned id back to the user.
origin: freeform — never gap-tied. Use capture-impl-gaps
for gap-traceable items.gap_id: null — REQUIRED. The schema check fires on any
non-null value combined with origin: freeform.implement's freeform fix path (a
user-supplied --reason with no re-detection step).implement.capture-impl-gaps.assignee or depends_on. User supplies both.Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.
npx claudepluginhub thewoolleyman/livespec-impl-beads --plugin livespec-impl-beads