@uasyraf/helm 0.1.0 → 0.1.2
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/ONBOARDING.md +145 -0
- package/README.md +2 -0
- package/package.json +26 -2
package/ONBOARDING.md
ADDED
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
# Onboarding helm
|
|
2
|
+
|
|
3
|
+
Three install paths. Pick the one that matches your shape of use.
|
|
4
|
+
|
|
5
|
+
## Path A — Solo dev (default; zero config)
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
cd /path/to/your/repo
|
|
9
|
+
claude mcp add helm -- npx -y @uasyraf/helm
|
|
10
|
+
npx @uasyraf/helm install-hooks # SessionStart banner + PostToolUse scanner + statusline
|
|
11
|
+
npx @uasyraf/helm install-skills # /sprint /story /epic /debt /backlog /review
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
Open a Claude Code session — banner appears, slash commands work, MCP tools available. Edit a file with `// DEBT(owner=me): description`, the worker auto-logs it. `npx @uasyraf/helm dashboard` opens `http://127.0.0.1:4400`.
|
|
15
|
+
|
|
16
|
+
Local DB at `~/.helm/<repo-slug>.db`. Nothing leaves the machine.
|
|
17
|
+
|
|
18
|
+
## Path B — Team via Turso sync (recommended for distributed teams)
|
|
19
|
+
|
|
20
|
+
One person sets it up; teammates auto-pick it up via the committed `.helm/config.json`.
|
|
21
|
+
|
|
22
|
+
**Host (one-time, ~60 sec):**
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
turso db create acme-helm # free tier signup
|
|
26
|
+
URL=$(turso db show acme-helm --url)
|
|
27
|
+
TOKEN=$(turso db tokens create acme-helm)
|
|
28
|
+
npx @uasyraf/helm init --team --sync-url "$URL" --sync-token "$TOKEN"
|
|
29
|
+
git add .helm/config.json
|
|
30
|
+
git commit -m "wire helm team sync"
|
|
31
|
+
git push
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
**Each teammate (after pulling):**
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
claude mcp add helm -- npx -y @uasyraf/helm
|
|
38
|
+
npx @uasyraf/helm install-hooks
|
|
39
|
+
npx @uasyraf/helm install-skills
|
|
40
|
+
# next Claude Code session picks up .helm/config.json automatically
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
Each developer gets their own local embedded replica syncing against the shared Turso instance. Verified latency: writes on dev A land on dev B's machine in ~250ms.
|
|
44
|
+
|
|
45
|
+
## Path C — Team via BYOS Postgres
|
|
46
|
+
|
|
47
|
+
For teams who already operate a Postgres instance:
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
# Each developer:
|
|
51
|
+
export HELM_DB_URL=postgres://user:pass@host:5432/helm
|
|
52
|
+
claude mcp add helm -- npx -y @uasyraf/helm
|
|
53
|
+
npx @uasyraf/helm install-hooks
|
|
54
|
+
npx @uasyraf/helm install-skills
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
The Repository pattern dispatches to pg automatically; same MCP tool surface, data lives in shared Postgres. No local DB file.
|
|
58
|
+
|
|
59
|
+
## Optional — central HTTP server
|
|
60
|
+
|
|
61
|
+
If you'd rather not have each teammate sync individually (e.g. air-gapped CI runners that need to log progress):
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
# Host runs the server:
|
|
65
|
+
HELM_API_TOKEN=teamsecret npx @uasyraf/helm serve --http --port 4500
|
|
66
|
+
|
|
67
|
+
# Teammates configure Claude Code to connect:
|
|
68
|
+
claude mcp add helm --transport http http://host.local:4500/mcp \
|
|
69
|
+
--header "Authorization: Bearer teamsecret"
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
## First-session checklist
|
|
73
|
+
|
|
74
|
+
After install, your first Claude Code session should show:
|
|
75
|
+
|
|
76
|
+
- [ ] SessionStart banner: `[helm] sprint-1 (d1/14) | stories: 0/0 done | debt: 0 (Δ0)`
|
|
77
|
+
- [ ] Statusline at bottom showing the same line
|
|
78
|
+
- [ ] `/sprint`, `/story`, `/debt` slash commands available
|
|
79
|
+
- [ ] MCP tools listed under `helm` server
|
|
80
|
+
- [ ] `npx @uasyraf/helm dashboard` boots on `http://127.0.0.1:4400`
|
|
81
|
+
|
|
82
|
+
If any of those are missing, see Troubleshooting below.
|
|
83
|
+
|
|
84
|
+
## DEBT marker syntax (the killer feature)
|
|
85
|
+
|
|
86
|
+
The PostToolUse worker scans every Edit/Write for tagged debt:
|
|
87
|
+
|
|
88
|
+
```ts
|
|
89
|
+
// DEBT(owner=alice, expires=2026-Q3, severity=high, ref=DBT-12): description
|
|
90
|
+
# DEBT(owner=bob, expires=2026-12-01)
|
|
91
|
+
-- DEBT(owner=carol)
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
Comment prefixes: `//`, `#`, `--`. Fields: `owner`, `expires` (ISO date or `YYYY-Qn`), `severity` (`low|med|high|critical`), `ref`. Markers are de-duplicated by `file:line` — same line won't fire twice.
|
|
95
|
+
|
|
96
|
+
FIXME/TODO comments are **not** scanned in v1 to avoid legacy-codebase noise.
|
|
97
|
+
|
|
98
|
+
## Boundary with other tools
|
|
99
|
+
|
|
100
|
+
- **claude-mem** (conversation memory) — "what did I try yesterday?"
|
|
101
|
+
- **TodoWrite** (per-session, ephemeral) — your plan for the next hour
|
|
102
|
+
- **helm** (durable + team-shared) — sprints, stories, debt that survive sessions
|
|
103
|
+
|
|
104
|
+
Routing rule: durable + shared = helm. Per-session + personal = TodoWrite. Conversation recall = claude-mem.
|
|
105
|
+
|
|
106
|
+
## Troubleshooting
|
|
107
|
+
|
|
108
|
+
| Symptom | Cause | Fix |
|
|
109
|
+
|---|---|---|
|
|
110
|
+
| First `npx` is slow | npm fetches 460 KB tarball | One-time; subsequent runs hit cache |
|
|
111
|
+
| First `helm dashboard` is slow | SvelteKit build runs on first invocation | One-time ~10s |
|
|
112
|
+
| Banner doesn't appear in Claude Code | `install-hooks` not run, or settings.json edited externally | Re-run `install-hooks`; check `~/.claude/settings.json` for `# helm: SessionStart` tag |
|
|
113
|
+
| No slug detected | Not a git repo + no `.helm/project.json` | Run from inside a git repo OR `helm init --slug <name>` |
|
|
114
|
+
| Slug is wrong in monorepo | Auto-detect uses cwd basename / git remote | Drop `.helm/project.json` in the project's subdir: `{ "slug": "my-project", "name": "My Project" }` |
|
|
115
|
+
| Two devs see different state | Sync URL not set or mismatch | Check `.helm/config.json` is committed and present; verify `HELM_SYNC_URL` env not overriding |
|
|
116
|
+
| Worker doesn't auto-fire | PostToolUse hook not installed | `install-hooks` again; check `~/.claude/settings.json` for `# helm: PostToolUse` |
|
|
117
|
+
| Worker fires but no debt | DEBT marker syntax mismatch | Use exact `DEBT(key=value, ...)` form — see syntax above |
|
|
118
|
+
| Dashboard 401/403 | If on `--http` mode, missing/wrong `Authorization: Bearer` | Add the header with the correct `HELM_API_TOKEN` |
|
|
119
|
+
| Postgres connection error | `HELM_DB_URL` malformed or credentials wrong | Verify with `psql "$HELM_DB_URL"`; ensure user has CREATE-TABLE rights |
|
|
120
|
+
| Turso free tier limits | 9 GB / 1B row reads per month | Plenty for project tracking; upgrade if you outgrow it |
|
|
121
|
+
|
|
122
|
+
## Env vars cheatsheet
|
|
123
|
+
|
|
124
|
+
| Var | Purpose | Default |
|
|
125
|
+
|---|---|---|
|
|
126
|
+
| `HELM_DB_URL` | Storage backend. `postgres://...` → BYOS pg; `memory:pglite` → in-process pg (testing); otherwise libsql at `~/.helm/<slug>.db` | unset → libsql |
|
|
127
|
+
| `HELM_SYNC_URL` | Turso embedded-replica sync URL | unset → no sync |
|
|
128
|
+
| `HELM_SYNC_TOKEN` | Auth token for sync URL | unset |
|
|
129
|
+
| `HELM_API_TOKEN` | Bearer token for `helm serve --http` | unset → no auth |
|
|
130
|
+
| `HELM_HOME` | Where local DB + worker socket live | `~/.helm` |
|
|
131
|
+
| `HELM_DASHBOARD_HOST` | Dashboard bind host | `127.0.0.1` |
|
|
132
|
+
| `HELM_DASHBOARD_PORT` | Dashboard bind port | `4400` |
|
|
133
|
+
| `HELM_INTEGRATION` | Enable integration tests against external sqld | unset → skipped |
|
|
134
|
+
|
|
135
|
+
## What ships with the package
|
|
136
|
+
|
|
137
|
+
- `dist/` — compiled MCP server, worker, banner, dashboard launcher
|
|
138
|
+
- `dashboard/build/` — pre-built SvelteKit app (Node adapter)
|
|
139
|
+
- `skills/` — 7 slash command skills + project-tracker
|
|
140
|
+
- `hooks/hooks.json` — SessionStart + PostToolUse + statusline bundle
|
|
141
|
+
- `.claude-plugin/plugin.json` — plugin manifest (for future `/plugin install`)
|
|
142
|
+
- `.mcp.json` — MCP server registration template
|
|
143
|
+
- `LICENSE`, `README.md`
|
|
144
|
+
|
|
145
|
+
About 460 KB on the wire; 1.9 MB unpacked.
|
package/README.md
CHANGED
|
@@ -25,6 +25,8 @@ npx @uasyraf/helm install-skills # slash commands (/sprint, /story, /debt, ...
|
|
|
25
25
|
|
|
26
26
|
That's it. Open a Claude Code session and the banner appears. Edit a file with a `// DEBT(...)` marker, run `/debt`, and the item shows up.
|
|
27
27
|
|
|
28
|
+
**Onboarding a team or BYOS Postgres setup?** See **[ONBOARDING.md](ONBOARDING.md)** — three install paths (solo, Turso sync, Postgres, optional HTTP server), first-session checklist, troubleshooting table, and an env-var cheatsheet.
|
|
29
|
+
|
|
28
30
|
## What you get
|
|
29
31
|
|
|
30
32
|
| Surface | Purpose |
|
package/package.json
CHANGED
|
@@ -1,8 +1,31 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@uasyraf/helm",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.2",
|
|
4
4
|
"description": "Plug-and-play MCP server + dashboard for durable, multi-developer project state. Sprints, epics, stories, tasks, code-linked tech debt.",
|
|
5
5
|
"type": "module",
|
|
6
|
+
"repository": {
|
|
7
|
+
"type": "git",
|
|
8
|
+
"url": "git+https://github.com/uasyraf/helm.git"
|
|
9
|
+
},
|
|
10
|
+
"bugs": {
|
|
11
|
+
"url": "https://github.com/uasyraf/helm/issues"
|
|
12
|
+
},
|
|
13
|
+
"homepage": "https://github.com/uasyraf/helm#readme",
|
|
14
|
+
"keywords": [
|
|
15
|
+
"mcp",
|
|
16
|
+
"claude-code",
|
|
17
|
+
"project-management",
|
|
18
|
+
"sprint",
|
|
19
|
+
"tech-debt",
|
|
20
|
+
"kanban",
|
|
21
|
+
"scrum",
|
|
22
|
+
"scrumban",
|
|
23
|
+
"dashboard",
|
|
24
|
+
"sveltekit",
|
|
25
|
+
"turso",
|
|
26
|
+
"libsql"
|
|
27
|
+
],
|
|
28
|
+
"author": "Ummar Asyraf <ummar@artiselite.net>",
|
|
6
29
|
"engines": {
|
|
7
30
|
"node": ">=22.0.0"
|
|
8
31
|
},
|
|
@@ -20,7 +43,8 @@
|
|
|
20
43
|
"dashboard/package.json",
|
|
21
44
|
"dashboard/svelte.config.js",
|
|
22
45
|
"LICENSE",
|
|
23
|
-
"README.md"
|
|
46
|
+
"README.md",
|
|
47
|
+
"ONBOARDING.md"
|
|
24
48
|
],
|
|
25
49
|
"scripts": {
|
|
26
50
|
"build": "tsc -p tsconfig.json",
|