@infinitedusky/indusk-mcp 1.9.0 → 1.9.1

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": "@infinitedusky/indusk-mcp",
3
- "version": "1.9.0",
3
+ "version": "1.9.1",
4
4
  "description": "InDusk development system — skills, MCP tools, and CLI for structured AI-assisted development",
5
5
  "type": "module",
6
6
  "files": [
package/skills/jj.md ADDED
@@ -0,0 +1,115 @@
1
+ ---
2
+ name: jj
3
+ description: Jujutsu (jj) version control — describe-then-do workflow, splitting, and commit hygiene for monorepo development
4
+ ---
5
+
6
+ # Jujutsu (jj)
7
+
8
+ This project uses [Jujutsu](https://github.com/jj-vcs/jj) for version control, not raw git. All VCS operations go through `jj`.
9
+
10
+ ## Core Concept: Describe-Then-Do
11
+
12
+ Jujutsu has no staging area. Everything in the working copy is automatically part of the current change. This enables a **describe-then-do** workflow:
13
+
14
+ 1. **Describe your intent** — `jj describe "what I'm about to do"`
15
+ 2. **Do the work** — edit files, run commands, build the thing
16
+ 3. **Start the next change** — `jj new` creates a fresh empty change on top
17
+ 4. **Repeat** — describe → work → new → describe → work → new
18
+
19
+ This produces a clean history where every commit has a meaningful description written *before* the code, not after.
20
+
21
+ ## During /work
22
+
23
+ When executing an implementation plan, integrate jj into the per-item workflow:
24
+
25
+ ```
26
+ For each checklist item (or logical group of items):
27
+ 1. jj new # fresh change
28
+ 2. jj describe "Phase 2: add Redis connection pool" # declare intent
29
+ 3. [do the implementation work]
30
+ 4. [check off the item(s) in impl.md]
31
+ 5. → repeat from step 1 for the next item
32
+ ```
33
+
34
+ **Granularity:** One `jj new` per logical unit of work. This is usually one checklist item, but closely related items (e.g., "add type" + "add factory for that type") can share a change. The gate items (otel, verify, context, document) within a phase can be one change each or grouped — use judgment.
35
+
36
+ **Phase transitions** are natural commit boundaries. Always `jj new` when starting a new phase.
37
+
38
+ ## Monorepo Commit Siloing
39
+
40
+ This is a monorepo. Commits should be siloed between different contexts (what would be separate repos). When a phase touches multiple apps:
41
+
42
+ ```bash
43
+ # After doing work that spans indusk-mcp + root config:
44
+ jj split 'glob:"apps/indusk-mcp/**"' # first commit: indusk-mcp changes
45
+ jj describe @- "indusk-mcp: add Redis pool" # describe the split-off commit
46
+ jj describe "Root: sync Redis config" # describe the remainder
47
+ ```
48
+
49
+ Use `jj split <filesets>` to separate changes by context. The matching files go into the first (parent) commit; the rest stays in the current (child) commit.
50
+
51
+ ## Essential Commands
52
+
53
+ ### Daily workflow
54
+ ```bash
55
+ jj status # what's changed in the working copy
56
+ jj log # view recent history (graph format)
57
+ jj diff # see working copy changes
58
+ jj describe "message" # set/update description of current change
59
+ jj new # create new empty change on top of current
60
+ jj new -m "message" # create + describe in one step
61
+ ```
62
+
63
+ ### Splitting and reorganizing
64
+ ```bash
65
+ jj split 'glob:"apps/foo/**"' # split by file pattern
66
+ jj split file1.ts file2.ts # split by specific files
67
+ jj squash # fold current change into parent
68
+ jj squash --from <rev> # fold a specific change into its parent
69
+ ```
70
+
71
+ ### Navigating history
72
+ ```bash
73
+ jj log --limit 10 # recent commits
74
+ jj show <rev> # show a specific change
75
+ jj describe <rev> -m "new message" # update any change's description
76
+ ```
77
+
78
+ ### Bookmarks (jj's equivalent of branches)
79
+ ```bash
80
+ jj bookmark create <name> # create bookmark at current change
81
+ jj bookmark set <name> # move bookmark to current change
82
+ jj bookmark list # list all bookmarks
83
+ jj git push --bookmark <name> # push a bookmark to remote
84
+ ```
85
+
86
+ ### Working with remote
87
+ ```bash
88
+ jj git fetch # fetch from remote
89
+ jj git push # push current bookmark
90
+ jj rebase -d main # rebase onto main
91
+ ```
92
+
93
+ ## Important: jj, Not git
94
+
95
+ - **Never use raw `git` commands** — jj manages the git repo underneath. Running `git commit`, `git add`, etc. will conflict with jj's state.
96
+ - **No staging area** — there's no `git add`. All working copy changes are part of the current change.
97
+ - **Changes are mutable** — you can always `jj describe` to update a message, `jj squash` to combine, or `jj split` to separate. History rewriting is the normal workflow, not a special operation.
98
+ - **`@` means current change** — in commands, `@` refers to the working copy change. `@-` is the parent.
99
+ - **Editor issues** — in non-interactive environments (like Claude Code), use inline messages (`-m`) or `EDITOR="true"` to skip the editor for split operations.
100
+
101
+ ## Description Style
102
+
103
+ Follow the monorepo commit message conventions:
104
+
105
+ ```
106
+ {context}: {what changed}, {why if not obvious}
107
+
108
+ {optional body with details}
109
+
110
+ Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
111
+ ```
112
+
113
+ Context prefixes: the app or area name (`indusk-mcp:`, `indusk-docs:`, `Root:`, `Infrastructure:`, etc.)
114
+
115
+ Keep the first line under 72 characters. Use the body for details when the change is complex.
package/skills/work.md CHANGED
@@ -202,11 +202,16 @@ When you are corrected mid-work — the user says "no, not that way" or "don't d
202
202
 
203
203
  Don't wait to be told. Corrections are the most valuable source of project knowledge.
204
204
 
205
- ## Commits
205
+ ## Commits (jj)
206
206
 
207
- Commit at natural boundaries — typically at the end of a phase or when the context changes. Follow the monorepo rule: commits should be siloed between different contexts (what would be separate repos).
207
+ Use the **describe-then-do** workflow from the jj skill:
208
208
 
209
- Don't commit after every single checklist item — that's too granular. Don't wait until the entire plan is done — that's too coarse. A phase is usually the right unit.
209
+ 1. `jj new` before each logical unit of work
210
+ 2. `jj describe` to declare what you're about to do
211
+ 3. Do the work, check off the item(s)
212
+ 4. Repeat
213
+
214
+ Commit at natural boundaries — typically per checklist item or per phase gate (otel, verify, context, document). Follow the monorepo rule: if a change spans multiple apps, use `jj split` to silo commits between contexts. See the jj skill for details.
210
215
 
211
216
  ## Cross-Plan Impact
212
217