@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.
Files changed (3) hide show
  1. package/ONBOARDING.md +145 -0
  2. package/README.md +2 -0
  3. 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.0",
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",