@anthropologies/claudestory 0.1.7 → 0.1.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@anthropologies/claudestory",
3
- "version": "0.1.7",
3
+ "version": "0.1.9",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": {
@@ -13,6 +13,7 @@
13
13
  },
14
14
  "files": [
15
15
  "dist",
16
+ "src/skill",
16
17
  "README.md"
17
18
  ],
18
19
  "engines": {
@@ -0,0 +1,138 @@
1
+ ---
2
+ name: story
3
+ description: Cross-session context persistence for AI coding projects. Load project context, manage sessions, guide setup.
4
+ ---
5
+
6
+ # /story — Project Context & Session Management
7
+
8
+ claudestory tracks tickets, issues, roadmap, and handovers in a `.story/` directory so every AI coding session builds on the last instead of starting from zero.
9
+
10
+ ## How to Handle Arguments
11
+
12
+ `/story` is one smart command. Parse the user's intent from context:
13
+
14
+ - `/story` → full context load (default, see Step 2 below)
15
+ - `/story handover` → draft a session handover. Summarize the session's work, then call `claudestory_handover_create` with the drafted content and a descriptive slug
16
+ - `/story snapshot` → save project state (call `claudestory_snapshot` MCP tool)
17
+ - `/story export` → export project for sharing. Ask the user whether to export the current phase or the full project, then call `claudestory_export` with either `phase` or `all` set
18
+ - `/story status` → quick status check (call `claudestory_status` MCP tool)
19
+ - `/story help` → show all capabilities (read `~/.claude/skills/story/reference.md`)
20
+
21
+ If the user's intent doesn't match any of these, use the full context load.
22
+
23
+ ## Step 0: Check Setup
24
+
25
+ Check if the claudestory MCP tools are available by looking for `claudestory_status` in your available tools.
26
+
27
+ **If MCP tools ARE available** → proceed to Step 1.
28
+
29
+ **If MCP tools are NOT available:**
30
+
31
+ 1. Check if the `claudestory` CLI is installed: run `claudestory --version` via Bash
32
+ 2. If NOT installed:
33
+ - Check `node --version` and `npm --version` — both must be available
34
+ - If Node.js is missing, tell the user to install Node.js 20+ first
35
+ - Otherwise, with user permission, run: `npm install -g @anthropologies/claudestory`
36
+ - Then run: `claude mcp add claudestory -s user -- claudestory --mcp`
37
+ - Tell the user to restart Claude Code and run `/story` again
38
+ 3. If CLI IS installed but MCP not registered:
39
+ - With user permission, run: `claude mcp add claudestory -s user -- claudestory --mcp`
40
+ - Tell the user to restart Claude Code and run `/story` again
41
+
42
+ **Important:** Always use `npm install -g`, never `npx`, for the CLI. The MCP server needs the global binary.
43
+
44
+ **If MCP tools are unavailable and user doesn't want to set up**, fall back to CLI mode:
45
+ - Run `claudestory status` via Bash
46
+ - Run `claudestory recap` via Bash
47
+ - Run `claudestory handover latest` via Bash
48
+ - Read `RULES.md` and `WORK_STRATEGIES.md` if they exist in the project root
49
+ - Run `git log --oneline -10`
50
+ - Then continue to Step 3 below
51
+
52
+ ## Step 1: Check Project
53
+
54
+ - If `.story/` exists in the current working directory (or a parent) → proceed to Step 2
55
+ - If no `.story/` but the directory looks like a real project (has package.json, Cargo.toml, go.mod, pyproject.toml, .git, etc.) → offer to initialize: "Want me to set up claudestory? It creates a .story/ directory for tracking tickets, issues, and session handovers." With permission, run `claudestory init --name <project-name>`
56
+ - If not a project directory → explain what claudestory is and suggest navigating to a project
57
+
58
+ ## Step 2: Load Context (Default /story Behavior)
59
+
60
+ Call these in order:
61
+
62
+ 1. **Project status** — call `claudestory_status` MCP tool
63
+ 2. **Session recap** — call `claudestory_recap` MCP tool (shows changes since last snapshot)
64
+ 3. **Recent handovers** — call `claudestory_handover_latest` MCP tool with `count: 3` (last 3 sessions' context — ensures reasoning behind recent decisions is preserved, not just the latest session's state)
65
+ 4. **Development rules** — read `RULES.md` if it exists in the project root
66
+ 5. **Lessons learned** — read `WORK_STRATEGIES.md` if it exists in the project root
67
+ 6. **Recent commits** — run `git log --oneline -10`
68
+
69
+ ## Step 3: Present Summary
70
+
71
+ After loading context, present a concise summary:
72
+
73
+ - Project progress (X/Y tickets complete, current phase)
74
+ - What changed since last snapshot (from recap)
75
+ - What the last session accomplished (from handover)
76
+ - Next ticket to work on
77
+ - Any high-severity issues or blockers
78
+ - Key process rules (from WORK_STRATEGIES.md if it exists)
79
+
80
+ For collaborative sessions, `claudestory_recommend` provides context-aware suggestions mixing tickets and issues. For autonomous sessions, `claudestory_ticket_next` provides queue-based next ticket.
81
+
82
+ Then ask: **"What would you like to work on?"**
83
+
84
+ ## Session Lifecycle
85
+
86
+ - **Snapshots** save project state for diffing. They may be auto-taken before context compaction.
87
+ - **Handovers** are session continuity documents. Create one at the end of significant sessions.
88
+ - **Recaps** show what changed since the last snapshot — useful for understanding drift.
89
+
90
+ **Never modify or overwrite existing handover files.** Handovers are append-only historical records. Always create new handover files — never edit, replace, or write to an existing one. If you need to correct something from a previous session, create a new handover that references the correction. This prevents accidental data loss during sessions.
91
+
92
+ Before writing a handover at the end of a session, run `claudestory snapshot` first. This ensures the next session's recap can show what changed. If `setup-skill` has been run, a PreCompact hook auto-takes snapshots before context compaction.
93
+
94
+ ## Ticket and Issue Discipline
95
+
96
+ **Tickets** are planned work — features, tasks, refactors. They represent intentional, scoped commitments.
97
+
98
+ **Ticket types:**
99
+ - `task` — Implementation work: building features, writing code, fixing bugs, refactoring.
100
+ - `feature` — A user-facing capability or significant new functionality. Larger scope than a task.
101
+ - `chore` — Maintenance, publishing, documentation, cleanup. No functional change to the product.
102
+
103
+ **Issues** are discovered problems — bugs, inconsistencies, gaps, risks found during work. If you're not sure whether something is a ticket or an issue, make it an issue. It can be promoted to a ticket later.
104
+
105
+ When working on a task and you encounter a bug, inconsistency, or improvement opportunity that is out of scope for the current ticket, create an issue using `claudestory issue create` (CLI) with a clear title, severity, and impact description. Don't fix it in the current task, don't ignore it — log it. This keeps the issue tracker growing organically and ensures nothing discovered during work is lost.
106
+
107
+ When starting work on a ticket, update its status to `inprogress`. When done, update to `complete` in the same commit as the code change.
108
+
109
+ ## Managing Tickets and Issues
110
+
111
+ Ticket and issue create/update operations are available via both CLI and MCP tools. Delete remains CLI-only.
112
+
113
+ CLI examples:
114
+ - `claudestory ticket create --title "..." --type task --phase p0`
115
+ - `claudestory ticket update T-001 --status complete`
116
+ - `claudestory issue create --title "..." --severity high --impact "..."`
117
+
118
+ MCP examples:
119
+ - `claudestory_ticket_create` with `title`, `type`, and optional `phase`, `description`, `blockedBy`, `parentTicket`
120
+ - `claudestory_ticket_update` with `id` and optional `status`, `title`, `order`, `description`, `phase`, `parentTicket`
121
+ - `claudestory_issue_create` with `title`, `severity`, `impact`, and optional `components`, `relatedTickets`, `location`, `phase`
122
+ - `claudestory_issue_update` with `id` and optional `status`, `title`, `severity`, `impact`, `resolution`, `components`, `relatedTickets`, `location`
123
+
124
+ Read operations (list, get, next, blocked) are available via both CLI and MCP.
125
+
126
+ ## Notes
127
+
128
+ **Notes** are unstructured brainstorming artifacts — ideas, design thinking, "what if" explorations. Use notes when the content doesn't fit tickets (planned work) or issues (discovered problems).
129
+
130
+ Create notes via CLI: `claudestory note create --content "..." --tags idea`
131
+
132
+ Create notes via MCP: `claudestory_note_create` with `content`, optional `title` and `tags`.
133
+
134
+ List, get, and update notes via MCP: `claudestory_note_list`, `claudestory_note_get`, `claudestory_note_update`. Delete remains CLI-only: `claudestory note delete <id>`.
135
+
136
+ ## Command & Tool Reference
137
+
138
+ For the full list of CLI commands and MCP tools, read `reference.md` in the same directory as this skill file.
@@ -0,0 +1,338 @@
1
+ # claudestory Reference
2
+
3
+ ## CLI Commands
4
+
5
+ ### init
6
+ Initialize a new .story/ project
7
+
8
+ ```
9
+ claudestory init [--name <name>] [--type <type>] [--language <lang>] [--force] [--format json|md]
10
+ ```
11
+
12
+ ### status
13
+ Project summary: phase statuses, ticket/issue counts, blockers
14
+
15
+ ```
16
+ claudestory status [--format json|md]
17
+ ```
18
+
19
+ ### ticket list
20
+ List tickets with optional filters
21
+
22
+ ```
23
+ claudestory ticket list [--status <s>] [--phase <p>] [--type <t>] [--format json|md]
24
+ ```
25
+
26
+ ### ticket get
27
+ Get ticket details by ID
28
+
29
+ ```
30
+ claudestory ticket get <id> [--format json|md]
31
+ ```
32
+
33
+ ### ticket next
34
+ Suggest next ticket(s) to work on
35
+
36
+ ```
37
+ claudestory ticket next [--count N] [--format json|md]
38
+ ```
39
+
40
+ ### ticket blocked
41
+ List blocked tickets with their blocking dependencies
42
+
43
+ ```
44
+ claudestory ticket blocked [--format json|md]
45
+ ```
46
+
47
+ ### ticket create
48
+ Create a new ticket
49
+
50
+ ```
51
+ claudestory ticket create --title <t> --type <type> [--phase <p>] [--description <d>] [--blocked-by <ids>] [--parent-ticket <id>] [--format json|md]
52
+ ```
53
+
54
+ ### ticket update
55
+ Update a ticket
56
+
57
+ ```
58
+ claudestory ticket update <id> [--status <s>] [--title <t>] [--phase <p>] [--order <n>] [--description <d>] [--blocked-by <ids>] [--parent-ticket <id>] [--format json|md]
59
+ ```
60
+
61
+ ### ticket delete
62
+ Delete a ticket
63
+
64
+ ```
65
+ claudestory ticket delete <id> [--force] [--format json|md]
66
+ ```
67
+
68
+ ### issue list
69
+ List issues with optional filters
70
+
71
+ ```
72
+ claudestory issue list [--status <s>] [--severity <sev>] [--format json|md]
73
+ ```
74
+
75
+ ### issue get
76
+ Get issue details by ID
77
+
78
+ ```
79
+ claudestory issue get <id> [--format json|md]
80
+ ```
81
+
82
+ ### issue create
83
+ Create a new issue
84
+
85
+ ```
86
+ claudestory issue create --title <t> --severity <s> --impact <i> [--components <c>] [--related-tickets <ids>] [--location <locs>] [--format json|md]
87
+ ```
88
+
89
+ ### issue update
90
+ Update an issue
91
+
92
+ ```
93
+ claudestory issue update <id> [--status <s>] [--title <t>] [--severity <sev>] [--impact <i>] [--resolution <r>] [--components <c>] [--related-tickets <ids>] [--location <locs>] [--format json|md]
94
+ ```
95
+
96
+ ### issue delete
97
+ Delete an issue
98
+
99
+ ```
100
+ claudestory issue delete <id> [--format json|md]
101
+ ```
102
+
103
+ ### phase list
104
+ List all phases with derived status
105
+
106
+ ```
107
+ claudestory phase list [--format json|md]
108
+ ```
109
+
110
+ ### phase current
111
+ Show current (first non-complete) phase
112
+
113
+ ```
114
+ claudestory phase current [--format json|md]
115
+ ```
116
+
117
+ ### phase tickets
118
+ List tickets in a specific phase
119
+
120
+ ```
121
+ claudestory phase tickets --phase <id> [--format json|md]
122
+ ```
123
+
124
+ ### phase create
125
+ Create a new phase
126
+
127
+ ```
128
+ claudestory phase create --id <id> --name <n> --label <l> --description <d> [--summary <s>] [--after <id>] [--at-start] [--format json|md]
129
+ ```
130
+
131
+ ### phase rename
132
+ Rename/update phase metadata
133
+
134
+ ```
135
+ claudestory phase rename <id> [--name <n>] [--label <l>] [--description <d>] [--summary <s>] [--format json|md]
136
+ ```
137
+
138
+ ### phase move
139
+ Move a phase to a new position
140
+
141
+ ```
142
+ claudestory phase move <id> [--after <id>] [--at-start] [--format json|md]
143
+ ```
144
+
145
+ ### phase delete
146
+ Delete a phase
147
+
148
+ ```
149
+ claudestory phase delete <id> [--reassign <phase-id>] [--format json|md]
150
+ ```
151
+
152
+ ### handover list
153
+ List handover filenames (newest first)
154
+
155
+ ```
156
+ claudestory handover list [--format json|md]
157
+ ```
158
+
159
+ ### handover latest
160
+ Content of most recent handover
161
+
162
+ ```
163
+ claudestory handover latest [--format json|md]
164
+ ```
165
+
166
+ ### handover get
167
+ Content of a specific handover
168
+
169
+ ```
170
+ claudestory handover get <filename> [--format json|md]
171
+ ```
172
+
173
+ ### handover create
174
+ Create a new handover document
175
+
176
+ ```
177
+ claudestory handover create [--content <md>] [--stdin] [--slug <slug>] [--format json|md]
178
+ ```
179
+
180
+ ### blocker list
181
+ List all roadmap blockers
182
+
183
+ ```
184
+ claudestory blocker list [--format json|md]
185
+ ```
186
+
187
+ ### blocker add
188
+ Add a new blocker
189
+
190
+ ```
191
+ claudestory blocker add --name <n> [--note <note>] [--format json|md]
192
+ ```
193
+
194
+ ### blocker clear
195
+ Clear (resolve) a blocker
196
+
197
+ ```
198
+ claudestory blocker clear --name <n> [--note <note>] [--format json|md]
199
+ ```
200
+
201
+ ### note list
202
+ List notes with optional status/tag filters
203
+
204
+ ```
205
+ claudestory note list [--status <s>] [--tag <t>] [--format json|md]
206
+ ```
207
+
208
+ ### note get
209
+ Get a note by ID
210
+
211
+ ```
212
+ claudestory note get <id> [--format json|md]
213
+ ```
214
+
215
+ ### note create
216
+ Create a new note
217
+
218
+ ```
219
+ claudestory note create --content <c> [--title <t>] [--tags <tags>] [--format json|md]
220
+ ```
221
+
222
+ ### note update
223
+ Update a note
224
+
225
+ ```
226
+ claudestory note update <id> [--content <c>] [--title <t>] [--tags <tags>] [--clear-tags] [--status <s>] [--format json|md]
227
+ ```
228
+
229
+ ### note delete
230
+ Delete a note
231
+
232
+ ```
233
+ claudestory note delete <id> [--format json|md]
234
+ ```
235
+
236
+ ### validate
237
+ Reference integrity + schema checks on all .story/ files
238
+
239
+ ```
240
+ claudestory validate [--format json|md]
241
+ ```
242
+
243
+ ### snapshot
244
+ Save current project state for session diffs
245
+
246
+ ```
247
+ claudestory snapshot [--quiet] [--format json|md]
248
+ ```
249
+
250
+ ### recap
251
+ Session diff — changes since last snapshot + suggested actions
252
+
253
+ ```
254
+ claudestory recap [--format json|md]
255
+ ```
256
+
257
+ ### export
258
+ Self-contained project document for sharing
259
+
260
+ ```
261
+ claudestory export [--phase <id>] [--all] [--format json|md]
262
+ ```
263
+
264
+ ### recommend
265
+ Context-aware work suggestions
266
+
267
+ ```
268
+ claudestory recommend [--count N] [--format json|md]
269
+ ```
270
+
271
+ ### reference
272
+ Print CLI command and MCP tool reference
273
+
274
+ ```
275
+ claudestory reference [--format json|md]
276
+ ```
277
+
278
+ ### setup-skill
279
+ Install the /story skill globally for Claude Code
280
+
281
+ ```
282
+ claudestory setup-skill
283
+ ```
284
+
285
+ ## MCP Tools
286
+
287
+ - **claudestory_status** — Project summary: phase statuses, ticket/issue counts, blockers
288
+ - **claudestory_phase_list** — All phases with derived status
289
+ - **claudestory_phase_current** — First non-complete phase
290
+ - **claudestory_phase_tickets** (phaseId) — Leaf tickets for a specific phase
291
+ - **claudestory_ticket_list** (status?, phase?, type?) — List leaf tickets with optional filters
292
+ - **claudestory_ticket_get** (id) — Get a ticket by ID
293
+ - **claudestory_ticket_next** (count?) — Highest-priority unblocked ticket(s)
294
+ - **claudestory_ticket_blocked** — All blocked tickets with dependencies
295
+ - **claudestory_issue_list** (status?, severity?) — List issues with optional filters
296
+ - **claudestory_issue_get** (id) — Get an issue by ID
297
+ - **claudestory_handover_list** — List handover filenames (newest first)
298
+ - **claudestory_handover_latest** — Content of most recent handover
299
+ - **claudestory_handover_get** (filename) — Content of a specific handover
300
+ - **claudestory_handover_create** (content, slug?) — Create a handover from markdown content
301
+ - **claudestory_blocker_list** — All roadmap blockers with status
302
+ - **claudestory_validate** — Reference integrity + schema checks
303
+ - **claudestory_recap** — Session diff — changes since last snapshot
304
+ - **claudestory_recommend** (count?) — Context-aware ranked work suggestions
305
+ - **claudestory_snapshot** — Save current project state snapshot
306
+ - **claudestory_export** (phase?, all?) — Self-contained project document
307
+ - **claudestory_note_list** (status?, tag?) — List notes
308
+ - **claudestory_note_get** (id) — Get note by ID
309
+ - **claudestory_note_create** (content, title?, tags?) — Create note
310
+ - **claudestory_note_update** (id, content?, title?, tags?, status?) — Update note
311
+ - **claudestory_ticket_create** (title, type, phase?, description?, blockedBy?, parentTicket?) — Create ticket
312
+ - **claudestory_ticket_update** (id, status?, title?, order?, description?, phase?, parentTicket?) — Update ticket
313
+ - **claudestory_issue_create** (title, severity, impact, components?, relatedTickets?, location?, phase?) — Create issue
314
+ - **claudestory_issue_update** (id, status?, title?, severity?, impact?, resolution?, components?, relatedTickets?, location?) — Update issue
315
+
316
+ ## Common Workflows
317
+
318
+ ### Session Start
319
+ 1. `claudestory status` — project overview
320
+ 2. `claudestory recap` — what changed since last snapshot
321
+ 3. `claudestory handover latest` — last session context
322
+ 4. `claudestory ticket next` — what to work on
323
+
324
+ ### Session End
325
+ 1. `claudestory snapshot` — save state for diffs
326
+ 2. `claudestory handover create --content <md>` — write session handover
327
+
328
+ ### Project Setup
329
+ 1. `npm install -g @anthropologies/claudestory` — install CLI
330
+ 2. `claudestory setup-skill` — install /story skill for Claude Code
331
+ 3. `claudestory init --name my-project` — initialize .story/ in your project
332
+
333
+ ## Troubleshooting
334
+
335
+ - **MCP not connected:** Run `claude mcp add claudestory -s user -- claudestory --mcp`
336
+ - **CLI not found:** Run `npm install -g @anthropologies/claudestory`
337
+ - **Stale data:** Run `claudestory validate` to check integrity
338
+ - **/story not available:** Run `claudestory setup-skill` to install the skill