From playbook
Import a plan from ~/.claude/plans/ into playbook with versioning, references, and status tracking. Plans are stored as versioned directories and can be reviewed, resumed, and tracked through implementation.
How this skill is triggered — by the user, by Claude, or both
Slash command
/playbook:capture-plan-pbThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
<purpose>
<load-config>
<action>Resolve the user's home directory.</action>
<command language="bash" output="home" tool="Bash">echo $HOME</command>
<constraint>Never pass `~` to the Read tool.</constraint>
<read path="<home>/.things/config.json" output="config" />
<if condition="config-missing">Tell the user: "Run `/things:setup-things` first." Then stop.<exit /></if>
<read path="<home>/.things/playbook/preferences.json" output="preferences" />
<if condition="preferences-missing">Tell the user: "Run `/setup-pb` first." Then stop.<exit /></if>
</load-config>
Parse Arguments
<action>Parse `$ARGUMENTS` for:</action>
- **thing**: The plan to import (search term)
- **--status**: Override initial status (default: `active`)
- **--project**: Project name or path to associate
- **--references**: Comma-separated paths relative to `~/.things/` (e.g., `i-did-a-thing/logs/2026-02-20-api-redesign.md,shared/people/alice.json`)
Find Plan in ~/.claude/plans/
<action>List all `.md` files in `<home>/.claude/plans/`. For each, read the first ~30 lines to extract a summary (first heading, first paragraph, or plan overview).</action>
<if condition="thing-provided">
<action>Match `<thing>` against filenames and content. Rank by relevance.</action>
<if condition="single-match">Use it.</if>
<if condition="multiple-matches">
<action>Show numbered list of matches via AskUserQuestion.</action>
</if>
<if condition="no-matches">
<action>Show all available plans as a numbered list.</action>
</if>
</if>
<if condition="thing-not-provided">
<action>Show all available plans as a numbered list via AskUserQuestion.</action>
</if>
Read Full Plan Content
<action>Read the full content of the selected plan file.</action>
Generate Frontmatter
<action>Derive frontmatter fields:</action>
- `title`: From first H1 heading, or from content summary, or from filename (de-slugified)
- `date`: Today's date
- `description`: 1-2 sentence summary of the plan's scope
- `doc_type`: `"plan"`
- `status`: From `--status` flag or default `"active"`
- `source_plan`: Original filename (e.g., `"ethereal-mixing-spark.md"`)
- `project`: From `--project` flag, or infer from plan content (repo names, project paths), or omit
- `tags`: Auto-generated from technologies, scope keywords, project name
- `references`: From `--references` flag or ask the user (see step 6)
- `slug`: Slugified title
- `version`: Determined in step 6
<action>Generate slug from title: `<slugified-title>`</action>
Check for Existing Plan and Determine Version
<action>Check if `<home>/.things/playbook/plans/<slug>/` directory exists.</action>
<if condition="directory-exists">
<action>Find the highest version number: list `v*.md` files, extract numbers, take max. Set version to max + 1.</action>
</if>
<if condition="directory-missing">
<action>Create the directory. Set version to 1.</action>
<command language="bash" tool="Bash">mkdir -p <home>/.things/playbook/plans/<slug></command>
</if>
<if condition="--references not provided">
<ask-user-question>
<question>Does this plan reference other .things/ data? (e.g., logs, people, campaigns)</question>
<option label="No references">No links to other data</option>
<option-with-text-input>Yes -- enter paths (comma-separated, relative to ~/.things/)</option-with-text-input>
</ask-user-question>
</if>
<action>Add `version` and `slug` to frontmatter.</action>
Write Plan to Playbook
<write path="<home>/.things/playbook/plans/<slug>/v<version>.md">
<template name="plan">
```markdown
---
title: "<title>"
date: <YYYY-MM-DD>
description: "<description>"
doc_type: "plan"
status: "<status>"
slug: "<slug>"
version: <version>
source_plan: "<original-filename>"
project: "<project>"
references:
- "<ref1>"
- "<ref2>"
tags: [<tags>]
---
<original plan content, preserved verbatim>
```
</template>
<constraint>If references is empty, write `references: []` as an inline list.</constraint>
</write>
Handle Source File
<if condition="preferences.plan_import_behavior == 'move'">
<action>Delete the original file from `~/.claude/plans/`.</action>
</if>
<if condition="preferences.plan_import_behavior == 'copy'">
<action>Leave the original in place.</action>
</if>
Handle Git Workflow
<git-workflow>
<action>Pull latest before committing.</action>
<command language="bash" tool="Bash">git -C <home>/.things pull --rebase 2>/dev/null || true</command>
<action>Read git workflow from `config.json` (`git.workflow`).</action>
<if condition="workflow-auto">Automatically `git add`, `git commit -m "plan: <title> (v<version>)"`, and `git push`.</if>
<if condition="workflow-ask">
<ask-user-question>
<question>Commit and push this plan?</question>
<option>Yes -- commit and push</option>
<option>Commit only</option>
<option>No -- I'll handle git myself</option>
</ask-user-question>
</if>
<if condition="workflow-manual">Tell the user the plan has been saved.</if>
</git-workflow>
Confirm
<completion-message>
Imported: **<title>** (v<version>, status: `<status>`)
Location: `<home>/.things/playbook/plans/<slug>/v<version>.md`
Source: `<source_plan>` (<copied|moved>)
References: <references or "none">
Tags: `<tags>`
Next steps:
- `/review-against-pb <slug>` -- Review branch work against this plan
- `/resume-plan-pb <slug>` -- Start implementing from the plan
- `/progress-pb <slug>` -- Check implementation progress
</completion-message>
npx claudepluginhub brennacodes/brenna-plugs --plugin playbookImports external plans or PRDs into Plan-Build-Run format. Validates context, detects conflicts with existing architecture, generates PLAN.md.
Imports Claude Code plan files from ~/.claude/plans/*.md into project's specs/ directory using slugified H1 headings as filenames. Supports interactive selection, --today, --since, --all filters, conflict checks.
Saves the latest implementation plan from docs/plans/ to a GitHub issue with repo, branch, and directory context for execution in a separate Claude Code session.