start-threadlisted
Install: claude install-skill shck-dev/ccx-context-system
# Start a thread — scaffold a scratch workspace
Topic requested: **$ARGUMENTS**
**Project + config:**
!`bun "${CLAUDE_PLUGIN_ROOT}/scripts/where.ts"`
**Current branch:** !`git rev-parse --abbrev-ref HEAD 2>/dev/null || echo "(not a git repo)"`
**Existing threads:**
!`bun "${CLAUDE_PLUGIN_ROOT}/scripts/threads.ts" --slugs`
## Do this
1. **If `$ARGUMENTS` is empty**, ask for the topic — don't guess.
2. **Normalize** the topic to a slug — run via Bash:
`bun "${CLAUDE_PLUGIN_ROOT}/scripts/slug.ts" "<topic>"`
(one shared identity function — never re-implement slugging by hand; if the variable shows as a
literal, use the `plugin root:` path from the injected block above). With `ticket_system: none`
a thread is any unit of work; ticket-system adapters may extend this later.
3. **Guard:** if `<scratch_root>/<slug>/` already has a STATE doc (see the injected config block
for the real paths), STOP — show its first heading and offer to open it instead of clobbering.
4. **Seed the ask from the conversation** — there is no ticket system to pull from. If the goal
isn't clear from context, ask for one line. Mark anything unknown as TODO rather than inventing.
5. **Create** `<scratch_root>/<slug>/` and write the STATE doc from the template below, filling
the frontmatter (`title: <slug>` · `kind: thread` · `summary:` one-line blurb) and **The ask**.
Use the `state_basename` from the injected config block (default `STATE.md`).
6. **Version-control check:** if this