@storybloq/storybloq 1.2.0 → 1.4.0
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/README.md +8 -4
- package/dist/cli.js +12464 -8430
- package/dist/index.d.ts +187 -75
- package/dist/index.js +446 -66
- package/dist/mcp.js +6082 -3488
- package/package.json +1 -1
- package/src/skill/SKILL.md +18 -1
- package/src/skill/autonomous-mode.md +28 -0
- package/src/skill/federation-setup.md +264 -0
- package/src/skill/reference.md +20 -0
- package/src/skill/setup-flow.md +1 -1
package/README.md
CHANGED
|
@@ -40,7 +40,7 @@ The real cost isn't wasted setup time. It's repeated mistakes, relitigated desig
|
|
|
40
40
|
Every project gets a `.story/` directory of JSON and markdown files. Tickets, issues, roadmap phases, session handovers, and lessons learned all live there, tracked by git, readable by any AI.
|
|
41
41
|
|
|
42
42
|
- **CLI:** `storybloq` - inspect and mutate `.story/` from the terminal.
|
|
43
|
-
- **MCP server:**
|
|
43
|
+
- **MCP server:** 49 tools Claude Code and Codex can call directly, no subprocess spawning.
|
|
44
44
|
- **Skill:** `/story` in Claude Code or `$story` in Codex loads project state at the start of every session.
|
|
45
45
|
- **Mac app:** native sidebar that watches `.story/` and updates live while your AI client works (separate product, free on the App Store).
|
|
46
46
|
|
|
@@ -154,6 +154,7 @@ All commands accept `--format json|md` (default `md`). Pipe JSON through `jq` fo
|
|
|
154
154
|
| `storybloq ticket blocked` | All currently blocked tickets |
|
|
155
155
|
| `storybloq ticket create --title --type --phase [--description] [--blocked-by] [--parent-ticket]` | Create |
|
|
156
156
|
| `storybloq ticket update <id> [--status] [--title] [--phase] [--order] ...` | Update |
|
|
157
|
+
| `storybloq ticket meta get\|set\|unset <id> [path] [value]` | Manage custom passthrough metadata |
|
|
157
158
|
| `storybloq ticket delete <id> [--force]` | Delete |
|
|
158
159
|
|
|
159
160
|
### Issues
|
|
@@ -164,6 +165,7 @@ All commands accept `--format json|md` (default `md`). Pipe JSON through `jq` fo
|
|
|
164
165
|
| `storybloq issue get <id>` | Issue detail |
|
|
165
166
|
| `storybloq issue create --title --severity --impact [--components] [--related-tickets] [--location]` | Create |
|
|
166
167
|
| `storybloq issue update <id> [--status] [--title] [--severity] ...` | Update |
|
|
168
|
+
| `storybloq issue meta get\|set\|unset <id> [path] [value]` | Manage custom passthrough metadata |
|
|
167
169
|
| `storybloq issue delete <id>` | Delete |
|
|
168
170
|
|
|
169
171
|
### Notes and lessons
|
|
@@ -195,15 +197,15 @@ codex mcp add storybloq --env STORYBLOQ_CLIENT=codex -- storybloq --mcp
|
|
|
195
197
|
|
|
196
198
|
The server imports the same TypeScript modules as the CLI directly, so there's no subprocess overhead. It auto-discovers the project root by walking up from the working directory to the nearest `.story/` parent.
|
|
197
199
|
|
|
198
|
-
**
|
|
200
|
+
**49 tools** grouped by responsibility:
|
|
199
201
|
|
|
200
202
|
### Read (no side effects)
|
|
201
203
|
|
|
202
|
-
`storybloq_status` · `storybloq_phase_list` · `storybloq_phase_current` · `storybloq_phase_tickets` · `storybloq_ticket_list` · `storybloq_ticket_get` · `storybloq_ticket_next` · `storybloq_ticket_blocked` · `storybloq_issue_list` · `storybloq_issue_get` · `storybloq_note_list` · `storybloq_note_get` · `storybloq_lesson_list` · `storybloq_lesson_get` · `storybloq_lesson_digest` · `storybloq_handover_list` · `storybloq_handover_latest` · `storybloq_handover_get` · `storybloq_blocker_list` · `storybloq_validate` · `storybloq_recap` · `storybloq_recommend` · `storybloq_export` · `storybloq_selftest`
|
|
204
|
+
`storybloq_status` · `storybloq_phase_list` · `storybloq_phase_current` · `storybloq_phase_tickets` · `storybloq_ticket_list` · `storybloq_ticket_get` · `storybloq_ticket_meta_get` · `storybloq_ticket_next` · `storybloq_ticket_blocked` · `storybloq_issue_list` · `storybloq_issue_get` · `storybloq_issue_meta_get` · `storybloq_note_list` · `storybloq_note_get` · `storybloq_lesson_list` · `storybloq_lesson_get` · `storybloq_lesson_digest` · `storybloq_handover_list` · `storybloq_handover_latest` · `storybloq_handover_get` · `storybloq_blocker_list` · `storybloq_validate` · `storybloq_recap` · `storybloq_recommend` · `storybloq_export` · `storybloq_selftest`
|
|
203
205
|
|
|
204
206
|
### Write (mutate `.story/`)
|
|
205
207
|
|
|
206
|
-
`storybloq_snapshot` · `storybloq_handover_create` · `storybloq_ticket_create` · `storybloq_ticket_update` · `storybloq_issue_create` · `storybloq_issue_update` · `storybloq_note_create` · `storybloq_note_update` · `storybloq_lesson_create` · `storybloq_lesson_update` · `storybloq_lesson_reinforce` · `storybloq_phase_create`
|
|
208
|
+
`storybloq_snapshot` · `storybloq_handover_create` · `storybloq_ticket_create` · `storybloq_ticket_update` · `storybloq_ticket_meta_set` · `storybloq_ticket_meta_unset` · `storybloq_issue_create` · `storybloq_issue_update` · `storybloq_issue_meta_set` · `storybloq_issue_meta_unset` · `storybloq_note_create` · `storybloq_note_update` · `storybloq_lesson_create` · `storybloq_lesson_update` · `storybloq_lesson_reinforce` · `storybloq_phase_create`
|
|
207
209
|
|
|
208
210
|
### Autonomous mode + review + observability
|
|
209
211
|
|
|
@@ -303,6 +305,8 @@ Full type definitions ship with the package (`exports.types`).
|
|
|
303
305
|
|
|
304
306
|
Each record is its own file. IDs are sequential within type (`T-001`, `T-002`, ...). Relationships are single-canonical-owner: a ticket's `blockedBy` field points at blocker tickets, and the reverse (who-blocks-me) is derived by scanning.
|
|
305
307
|
|
|
308
|
+
Ticket and issue records preserve unknown JSON fields. Use `storybloq ticket meta` and `storybloq issue meta` to read or mutate those custom passthrough fields without touching core Storybloq fields. Values are JSON, and dot paths address nested objects, for example `storybloq ticket meta set T-001 integration.linear '"ABC-123"'`.
|
|
309
|
+
|
|
306
310
|
## Example workflow
|
|
307
311
|
|
|
308
312
|
```bash
|