@kennethsolomon/shipkit 3.4.0 → 3.6.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 +2 -0
- package/package.json +1 -1
- package/skills/sk:brainstorming/SKILL.md +38 -1
- package/skills/sk:context/SKILL.md +117 -0
- package/skills/sk:dashboard/SKILL.md +71 -0
- package/skills/sk:dashboard/dashboard.html +939 -0
- package/skills/sk:dashboard/server.js +203 -0
- package/skills/sk:mvp/SKILL.md +78 -1
- package/skills/sk:setup-claude/templates/CLAUDE.md.template +1 -0
package/README.md
CHANGED
|
@@ -243,6 +243,8 @@ Requirement changes → /sk:change → re-enter at correct step
|
|
|
243
243
|
|---------|-------------|
|
|
244
244
|
| `/sk:help` | Show all commands and workflow overview |
|
|
245
245
|
| `/sk:status` | Show workflow and task status at a glance |
|
|
246
|
+
| `/sk:dashboard` | Read-only workflow Kanban board — localhost server, multi-worktree |
|
|
247
|
+
| `/sk:context` | Load all context files + output session brief for fast session start |
|
|
246
248
|
| `/sk:skill-creator` | Create or improve ShipKit skills |
|
|
247
249
|
|
|
248
250
|
---
|
package/package.json
CHANGED
|
@@ -32,6 +32,7 @@ You MUST create a task for each of these items and complete them in order:
|
|
|
32
32
|
- Key decisions made
|
|
33
33
|
- Chosen approach + rationale
|
|
34
34
|
- Open questions (if any remain)
|
|
35
|
+
Additionally, **append** an ADR entry to `docs/decisions.md` (see "Decisions Log" section below).
|
|
35
36
|
(Optionally also write a full design doc to docs/plans/YYYY-MM-DD-<topic>-design.md)
|
|
36
37
|
6. **Transition to implementation** — invoke writing-plans skill to create implementation plan
|
|
37
38
|
|
|
@@ -89,13 +90,49 @@ digraph brainstorming {
|
|
|
89
90
|
|
|
90
91
|
**Documentation:**
|
|
91
92
|
- Write the findings to `tasks/findings.md` (required — captures problem, decisions, approach, rationale)
|
|
93
|
+
- Append an ADR entry to `docs/decisions.md` (required — see "Decisions Log" section below)
|
|
92
94
|
- Optionally: Create a full design doc at `docs/plans/YYYY-MM-DD-<topic>-design.md` for complex projects
|
|
93
|
-
- Commit the findings and any design document to git
|
|
95
|
+
- Commit the findings, decisions log entry, and any design document to git
|
|
94
96
|
|
|
95
97
|
**Implementation:**
|
|
96
98
|
- Invoke the writing-plans skill to create a detailed implementation plan
|
|
97
99
|
- Do NOT invoke any other skill. writing-plans is the next step.
|
|
98
100
|
|
|
101
|
+
## Decisions Log
|
|
102
|
+
|
|
103
|
+
After writing findings to `tasks/findings.md`, also **append** an Architecture Decision Record (ADR) entry to `docs/decisions.md`. This file is **cumulative and append-only** — never overwrite or remove existing entries.
|
|
104
|
+
|
|
105
|
+
### If `docs/decisions.md` does not exist
|
|
106
|
+
|
|
107
|
+
Create it with this header before the first entry:
|
|
108
|
+
|
|
109
|
+
```markdown
|
|
110
|
+
# Architecture Decision Records
|
|
111
|
+
|
|
112
|
+
A cumulative log of key design decisions made across features. Append-only — never overwrite.
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
### ADR Entry Format
|
|
116
|
+
|
|
117
|
+
Append this template for each brainstorm decision:
|
|
118
|
+
|
|
119
|
+
```markdown
|
|
120
|
+
## [YYYY-MM-DD] [Feature/Task Name]
|
|
121
|
+
|
|
122
|
+
**Context:** [problem being solved — 1-2 sentences]
|
|
123
|
+
**Decision:** [chosen approach — 1 sentence]
|
|
124
|
+
**Rationale:** [why this approach over alternatives]
|
|
125
|
+
**Consequences:** [trade-offs accepted]
|
|
126
|
+
**Status:** accepted
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
### Rules
|
|
130
|
+
|
|
131
|
+
- **Append-only** — never edit or delete existing entries in `docs/decisions.md`
|
|
132
|
+
- **One entry per brainstorm** — each completed brainstorm adds exactly one ADR entry
|
|
133
|
+
- **Use absolute dates** — always `YYYY-MM-DD`, never relative dates
|
|
134
|
+
- Entries accumulate across features — this is a project-level historical record
|
|
135
|
+
|
|
99
136
|
## Key Principles
|
|
100
137
|
|
|
101
138
|
- **One question at a time** - Don't overwhelm with multiple questions
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: sk:context
|
|
3
|
+
description: "Session initializer — loads all project context files and outputs a formatted session brief. Run this at the start of every conversation to orient the AI and yourself."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# /sk:context — Session Brief + Context Loader
|
|
7
|
+
|
|
8
|
+
Load all project context files into the conversation and output a formatted session brief. Designed to be run at the **start of every session** for instant orientation.
|
|
9
|
+
|
|
10
|
+
## What It Does
|
|
11
|
+
|
|
12
|
+
1. **Reads** all context files (listed below) to load project state into the conversation
|
|
13
|
+
2. **Outputs** a formatted SESSION BRIEF the user can read at a glance
|
|
14
|
+
3. **Applies** all active lessons from `tasks/lessons.md` as standing constraints for the session
|
|
15
|
+
|
|
16
|
+
## Hard Rules
|
|
17
|
+
|
|
18
|
+
- **Read-only.** This skill does not modify any files.
|
|
19
|
+
- **Graceful fallback.** Missing files are noted in the brief, not treated as errors.
|
|
20
|
+
- **No questions.** This skill runs silently — it does not ask the user anything.
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## Files to Read (in order)
|
|
25
|
+
|
|
26
|
+
| # | File | What to Extract |
|
|
27
|
+
|---|------|-----------------|
|
|
28
|
+
| 1 | `tasks/todo.md` | Task name (from `# TODO —` heading), milestone progress, count of `- [x]` (done) vs `- [ ]` (pending) checkboxes |
|
|
29
|
+
| 2 | `tasks/workflow-status.md` | Current step (row with `>> next <<`), step name, command to run |
|
|
30
|
+
| 3 | `tasks/progress.md` | Last 5 entries only (most recent work). If file is large, read only the last 50 lines. |
|
|
31
|
+
| 4 | `tasks/findings.md` | Current decisions, chosen approach, open questions |
|
|
32
|
+
| 5 | `tasks/lessons.md` | All active lessons — read in full, apply as constraints for this session |
|
|
33
|
+
| 6 | `docs/decisions.md` | If exists: last 3 ADR entries. If missing: note "no decisions log yet" |
|
|
34
|
+
| 7 | `docs/vision.md` | If exists: product name + value proposition. If missing: note "no vision.md found" |
|
|
35
|
+
|
|
36
|
+
### Reading Strategy
|
|
37
|
+
|
|
38
|
+
- Read files 1-5 first (these are the core context).
|
|
39
|
+
- Files 6-7 are optional — check if they exist before reading.
|
|
40
|
+
- For `tasks/progress.md`: only read the last 50 lines to avoid loading a huge file.
|
|
41
|
+
- If `tasks/todo.md` is missing: the project has no active task.
|
|
42
|
+
- If `tasks/workflow-status.md` is missing: the workflow hasn't started.
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## Output Format
|
|
47
|
+
|
|
48
|
+
After reading all files, output this session brief:
|
|
49
|
+
|
|
50
|
+
```
|
|
51
|
+
╔══════════════════════════════════════════╗
|
|
52
|
+
║ SESSION BRIEF ║
|
|
53
|
+
╚══════════════════════════════════════════╝
|
|
54
|
+
Branch: [current git branch]
|
|
55
|
+
Task: [task name from todo.md, or "No active task"]
|
|
56
|
+
Step: [step #] [step name] → run `/sk:[command]`
|
|
57
|
+
Last done: [last progress.md entry summary, 1 line]
|
|
58
|
+
Pending: [N] checkboxes remaining in todo.md
|
|
59
|
+
Lessons: [count] active — [most critical 1-liner from lessons.md]
|
|
60
|
+
Open Qs: [open questions from findings.md, or "none"]
|
|
61
|
+
Product: [value prop from vision.md, or "no vision.md found"]
|
|
62
|
+
════════════════════════════════════════════
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
### Field Rules
|
|
66
|
+
|
|
67
|
+
- **Branch:** Run `git branch --show-current` to get the current branch name.
|
|
68
|
+
- **Task:** Extract from the first `# TODO —` line in `tasks/todo.md`. If the file doesn't exist or all checkboxes are done, show "No active task — ready to start fresh".
|
|
69
|
+
- **Step:** Find the row containing `>> next <<` in `tasks/workflow-status.md`. Extract step number, name, and command. If no `>> next <<` found, show "Workflow complete" or "Not started".
|
|
70
|
+
- **Last done:** The most recent entry from `tasks/progress.md`. Summarize in one line.
|
|
71
|
+
- **Pending:** Count `- [ ]` lines in `tasks/todo.md`. Stop counting at the first `## Verification`, `## Acceptance Criteria`, or `## Risks` heading (these are meta-sections, not tasks).
|
|
72
|
+
- **Lessons:** Count `### [` headings in `tasks/lessons.md` (each lesson starts with `### [YYYY-MM-DD]`). Show the count + the **Prevention:** line from the most recent lesson.
|
|
73
|
+
- **Open Qs:** Check for an "## Open Questions" section in `tasks/findings.md`. List them or say "none".
|
|
74
|
+
- **Product:** From `docs/vision.md`, extract the value proposition. If file doesn't exist, say "no vision.md found".
|
|
75
|
+
|
|
76
|
+
---
|
|
77
|
+
|
|
78
|
+
## After the Brief
|
|
79
|
+
|
|
80
|
+
After outputting the session brief:
|
|
81
|
+
|
|
82
|
+
1. **State the active lessons** that apply as constraints. List each prevention rule as a bullet.
|
|
83
|
+
2. **State what's next** — tell the user the next step and the command to run.
|
|
84
|
+
3. If the user has a specific request, proceed with it (the context is now loaded).
|
|
85
|
+
|
|
86
|
+
---
|
|
87
|
+
|
|
88
|
+
## Edge Cases
|
|
89
|
+
|
|
90
|
+
| Scenario | Behavior |
|
|
91
|
+
|----------|----------|
|
|
92
|
+
| No `tasks/todo.md` | Show "No active task — ready to start fresh" |
|
|
93
|
+
| No `tasks/workflow-status.md` | Show "Workflow not started" for Step field |
|
|
94
|
+
| No `tasks/progress.md` | Show "No progress logged yet" for Last done |
|
|
95
|
+
| No `tasks/findings.md` | Show "none" for Open Qs |
|
|
96
|
+
| No `tasks/lessons.md` | Show "0 active" for Lessons |
|
|
97
|
+
| No `docs/decisions.md` | Show "no decisions log yet" — do not error |
|
|
98
|
+
| No `docs/vision.md` | Show "no vision.md found" — do not error |
|
|
99
|
+
| All checkboxes done in todo.md | Show "Task complete — 0 pending" |
|
|
100
|
+
|
|
101
|
+
---
|
|
102
|
+
|
|
103
|
+
## Model Routing
|
|
104
|
+
|
|
105
|
+
Read `.shipkit/config.json` from the project root if it exists.
|
|
106
|
+
|
|
107
|
+
- If `model_overrides["sk:context"]` is set, use that model — it takes precedence.
|
|
108
|
+
- Otherwise use the `profile` field. Default: `balanced`.
|
|
109
|
+
|
|
110
|
+
| Profile | Model |
|
|
111
|
+
|---------|-------|
|
|
112
|
+
| `full-sail` | sonnet |
|
|
113
|
+
| `quality` | sonnet |
|
|
114
|
+
| `balanced` | sonnet |
|
|
115
|
+
| `budget` | haiku |
|
|
116
|
+
|
|
117
|
+
> This skill is lightweight (read-only file operations + brief output). Sonnet is sufficient for all quality profiles. Haiku for budget.
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: sk:dashboard
|
|
3
|
+
description: Read-only workflow Kanban board — localhost server showing workflow status across git worktrees
|
|
4
|
+
license: Complete terms in LICENSE.txt
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# /sk:dashboard
|
|
8
|
+
|
|
9
|
+
## Purpose
|
|
10
|
+
|
|
11
|
+
Read-only Kanban board that visualizes workflow progress across all git worktrees in a project. Runs as a standalone localhost server — no workflow integration required. Use it anytime you want a visual overview of where each worktree stands in the workflow.
|
|
12
|
+
|
|
13
|
+
## How to Start
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
node skills/sk:dashboard/server.js
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
Opens on `http://localhost:3333`. Stop with `Ctrl+C`.
|
|
20
|
+
|
|
21
|
+
Override the port:
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
node skills/sk:dashboard/server.js --port 4000
|
|
25
|
+
# or
|
|
26
|
+
PORT=4000 node skills/sk:dashboard/server.js
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## What It Shows
|
|
30
|
+
|
|
31
|
+
- **Swimlanes per worktree** — one row per worktree discovered via `git worktree list`
|
|
32
|
+
- **Phase timeline** — workflow steps laid out as columns (Read, Explore, Plan, Branch, Tests, Implement, Lint, Verify, Security, Review, E2E, Finalize)
|
|
33
|
+
- **Status indicators** — done, skipped, partial, in-progress, not yet
|
|
34
|
+
- **Progress bars** — percentage of steps completed per worktree
|
|
35
|
+
- **Current task** — the active task name from `tasks/todo.md`
|
|
36
|
+
|
|
37
|
+
## Architecture
|
|
38
|
+
|
|
39
|
+
Zero-dependency Node.js server. Uses only built-in modules (`http`, `fs`, `path`, `child_process`).
|
|
40
|
+
|
|
41
|
+
- `server.js` serves the dashboard HTML and exposes `/api/status`
|
|
42
|
+
- `/api/status` reads `tasks/workflow-status.md` and `tasks/todo.md` from each worktree, parses step statuses, and returns JSON
|
|
43
|
+
- `dashboard.html` is a single-file UI (HTML + embedded CSS + JS) that polls `/api/status` every 3 seconds
|
|
44
|
+
- Worktree discovery via `git worktree list`
|
|
45
|
+
|
|
46
|
+
## Key Details
|
|
47
|
+
|
|
48
|
+
- Read-only — does not modify any files
|
|
49
|
+
- Auto-discovers worktrees via `git worktree list`
|
|
50
|
+
- Graceful degradation: missing files show empty state, offline falls back to system fonts
|
|
51
|
+
- Default port 3333, configurable via `--port` flag or `PORT` env var
|
|
52
|
+
- Uses only Node.js built-in modules (http, fs, path, child_process)
|
|
53
|
+
|
|
54
|
+
## Files
|
|
55
|
+
|
|
56
|
+
- `server.js` — Node.js HTTP server (~150 lines)
|
|
57
|
+
- `dashboard.html` — Single-file Kanban UI (HTML + embedded CSS + JS)
|
|
58
|
+
|
|
59
|
+
## Model Routing
|
|
60
|
+
|
|
61
|
+
Read `.shipkit/config.json` from the project root if it exists.
|
|
62
|
+
|
|
63
|
+
- If `model_overrides["sk:dashboard"]` is set, use that model — it takes precedence.
|
|
64
|
+
- Otherwise use the `profile` field. Default: `balanced`.
|
|
65
|
+
|
|
66
|
+
| Profile | Model |
|
|
67
|
+
|---------|-------|
|
|
68
|
+
| `full-sail` | sonnet |
|
|
69
|
+
| `quality` | sonnet |
|
|
70
|
+
| `balanced` | sonnet |
|
|
71
|
+
| `budget` | haiku |
|