joycraft 0.6.15 → 0.6.17
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 +33 -13
- package/dist/{chunk-XOMQIK4U.js → chunk-3JVMOJTA.js} +9 -187
- package/dist/chunk-3JVMOJTA.js.map +1 -0
- package/dist/{chunk-YE4LWG2O.js → chunk-GWDLD7SH.js} +3 -2
- package/dist/chunk-GWDLD7SH.js.map +1 -0
- package/dist/cli.js +4 -4
- package/dist/{init-LXSMLAY5.js → init-OO77DURX.js} +163 -58
- package/dist/init-OO77DURX.js.map +1 -0
- package/dist/{init-autofix-OZW5ITFI.js → init-autofix-6GMXHF5F.js} +5 -3
- package/dist/{init-autofix-OZW5ITFI.js.map → init-autofix-6GMXHF5F.js.map} +1 -1
- package/dist/{upgrade-P3JZS7NM.js → upgrade-VKQ54KRD.js} +31 -6
- package/dist/upgrade-VKQ54KRD.js.map +1 -0
- package/package.json +1 -1
- package/dist/chunk-XOMQIK4U.js.map +0 -1
- package/dist/chunk-YE4LWG2O.js.map +0 -1
- package/dist/init-LXSMLAY5.js.map +0 -1
- package/dist/upgrade-P3JZS7NM.js.map +0 -1
package/README.md
CHANGED
|
@@ -31,7 +31,15 @@ Most developers plateau at Level 2. Joycraft's job is to move you up.
|
|
|
31
31
|
|
|
32
32
|
### Platform support
|
|
33
33
|
|
|
34
|
-
Joycraft supports **Claude Code**, **OpenAI Codex**, and **Pi** out of the box.
|
|
34
|
+
Joycraft supports **Claude Code**, **OpenAI Codex**, and **Pi** out of the box. When you run `npx joycraft init`, it opens with a quick picker — choose any combination of the three, and only the harnesses you select get installed:
|
|
35
|
+
|
|
36
|
+
```
|
|
37
|
+
Which AI harnesses should Joycraft install?
|
|
38
|
+
claude — Claude Code (.claude/)
|
|
39
|
+
codex — OpenAI Codex (.agents/)
|
|
40
|
+
pi — Pi (.pi/)
|
|
41
|
+
Harnesses [comma-separated, or "all"] (none): claude,pi
|
|
42
|
+
```
|
|
35
43
|
|
|
36
44
|
| Harness | Skills installed to | Invocation |
|
|
37
45
|
|---------|---------------------|------------|
|
|
@@ -39,7 +47,7 @@ Joycraft supports **Claude Code**, **OpenAI Codex**, and **Pi** out of the box.
|
|
|
39
47
|
| Codex | `.agents/skills/` (+ `AGENTS.md`) | `$joycraft-*` |
|
|
40
48
|
| Pi | `.pi/skills/` (+ pipeline runtime, see below) | `/skill:joycraft-*` |
|
|
41
49
|
|
|
42
|
-
All three get the same structured workflows, adapted for each tool's invocation model.
|
|
50
|
+
All three get the same structured workflows, adapted for each tool's invocation model. A single-harness install carries **no footprint from the others** — pick `codex` only and you get `.agents/` with no `.claude/` or `.pi/` in sight. In a non-interactive run (CI, piped, no TTY) `init` installs all three so existing scripts keep working. The shared docs (`CLAUDE.md`, `AGENTS.md`, `docs/`) are written regardless of which harnesses you pick.
|
|
43
51
|
|
|
44
52
|
### Headless spec execution (Pi)
|
|
45
53
|
|
|
@@ -70,16 +78,21 @@ cd /path/to/your/project
|
|
|
70
78
|
npx joycraft init
|
|
71
79
|
```
|
|
72
80
|
|
|
73
|
-
|
|
81
|
+
`init` first asks which harnesses to install (see [Platform support](#platform-support) above), then auto-detects your tech stack and creates:
|
|
74
82
|
|
|
75
83
|
- **CLAUDE.md** with behavioral boundaries (Always / Ask First / Never) and correct build/test/lint commands
|
|
76
|
-
- **AGENTS.md** for Codex compatibility
|
|
77
|
-
- **20 skills** installed to `.claude/skills/` (Claude Code), `.agents/skills/` (Codex), and `.pi/skills/` (Pi) — see [Which skill do I need?](#which-skill-do-i-need) below
|
|
78
|
-
- **Pi pipeline runtime** in `.pi/scripts/joycraft/` (when
|
|
79
|
-
- **
|
|
84
|
+
- **AGENTS.md** for Codex/Pi compatibility
|
|
85
|
+
- **20 skills** installed to the selected harnesses — `.claude/skills/` (Claude Code), `.agents/skills/` (Codex), and/or `.pi/skills/` (Pi) — see [Which skill do I need?](#which-skill-do-i-need) below
|
|
86
|
+
- **Pi pipeline runtime** in `.pi/scripts/joycraft/` (when Pi is selected) — the headless spec-execution driver and its helpers
|
|
87
|
+
- **Agent teams enabled** — when Claude Code is selected, `init` sets `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1` in `.claude/settings.json` so subagent-driven skills like `/joycraft-research` work out of the box (idempotent — it never clobbers a value you already set)
|
|
88
|
+
- **docs/** structure: `docs/context/` is created up front; feature work lands in `docs/features/<slug>/{brief.md, research.md, design.md, specs/}` and deferred work in `docs/backlog/` — these are created lazily by the skills that write to them. Joycraft's own upgrade state lives hidden at `docs/.joycraft/state.json` (harness-neutral, gitignored — never committed)
|
|
80
89
|
- **Context documents** in `docs/context/`: production map, dangerous assumptions, decision log, institutional knowledge, and troubleshooting guide
|
|
81
90
|
- **Templates** including atomic spec, feature brief, implementation plan, boundary framework, and workflow templates for scenario generation and autofix loops
|
|
82
91
|
|
|
92
|
+
> Pick nothing at the harness prompt and `init` installs nothing — it tells you to re-run and choose at least one harness.
|
|
93
|
+
|
|
94
|
+
**`init` only creates *missing* files.** It is safe to run on a project that already has Joycraft (or a hand-tuned `CLAUDE.md`): an existing `CLAUDE.md`, `AGENTS.md`, template, or skill file is **skipped, never regenerated** — your customizations are left untouched. Only `--force` overwrites existing files. The run summary lists what it skipped (`Skipped N file(s) (already exist, use --force to overwrite)`) so you can see exactly what was preserved. This makes `init` the right command to **fill in a private-profile clone**: a teammate who clones a `private` repo gets the committed `CLAUDE.md`/`AGENTS.md`/`docs/` but not the gitignored harness dirs — running `npx joycraft init` regenerates the missing skill files locally and leaves the committed files alone.
|
|
95
|
+
|
|
83
96
|
### Git tracking: shared vs private
|
|
84
97
|
|
|
85
98
|
By default Joycraft assumes you want to **commit** the harness so your whole team
|
|
@@ -91,21 +104,26 @@ npx joycraft init --gitignore=shared # default — commit .claude/, .agents/,
|
|
|
91
104
|
npx joycraft init --gitignore=private # gitignore them; track only CLAUDE.md, AGENTS.md, docs/
|
|
92
105
|
```
|
|
93
106
|
|
|
94
|
-
Run interactively without the flag and `init`
|
|
95
|
-
`npx joycraft upgrade` re-applies it
|
|
96
|
-
project later (or decide from CI), pass the
|
|
97
|
-
`npx joycraft upgrade --gitignore=private`. `.gitignore`
|
|
98
|
-
append-only — Joycraft never rewrites or removes your existing lines.
|
|
107
|
+
Run interactively without the flag and `init` asks (right after the harness
|
|
108
|
+
picker). The choice is saved, so `npx joycraft upgrade` re-applies it
|
|
109
|
+
automatically. To switch an existing project later (or decide from CI), pass the
|
|
110
|
+
same flag to upgrade: `npx joycraft upgrade --gitignore=private`. `.gitignore`
|
|
111
|
+
edits are append-only — Joycraft never rewrites or removes your existing lines.
|
|
99
112
|
|
|
100
113
|
| Profile | Tracked in git | Gitignored |
|
|
101
114
|
|---------|----------------|------------|
|
|
102
|
-
| `shared` (default) | `CLAUDE.md`, `AGENTS.md`, `docs/`, `.claude/skills/`, `.agents/`, `.pi/` | hidden upgrade state only |
|
|
115
|
+
| `shared` (default) | `CLAUDE.md`, `AGENTS.md`, `docs/`, `.claude/skills/`, `.agents/`, `.pi/` | hidden upgrade state only (`docs/.joycraft/state.json`) |
|
|
103
116
|
| `private` | `CLAUDE.md`, `AGENTS.md`, `docs/` | `.claude/`, `.agents/`, `.pi/` |
|
|
104
117
|
|
|
105
118
|
> Switching an existing project to `private` only updates `.gitignore`. If
|
|
106
119
|
> harness files were already committed, untrack them with
|
|
107
120
|
> `git rm -r --cached .claude .agents .pi` (Joycraft prints this reminder and
|
|
108
121
|
> never runs git for you).
|
|
122
|
+
>
|
|
123
|
+
> Under `private`, the harness dirs aren't committed — so a teammate who clones
|
|
124
|
+
> the repo gets `CLAUDE.md`/`AGENTS.md` but no skills until they run
|
|
125
|
+
> `npx joycraft init` to regenerate them locally. Joycraft adds a one-line
|
|
126
|
+
> reminder to your generated `CLAUDE.md` and `AGENTS.md` for exactly this reason.
|
|
109
127
|
|
|
110
128
|
### Supported Stacks
|
|
111
129
|
|
|
@@ -198,6 +216,8 @@ npx joycraft upgrade
|
|
|
198
216
|
|
|
199
217
|
Joycraft tracks what it installed vs. what you've customized. Unmodified files update automatically. Customized files show a diff and ask before overwriting. Use `--yes` for CI.
|
|
200
218
|
|
|
219
|
+
`upgrade` only refreshes the harnesses you installed at init — a Codex-only project stays Codex-only and never grows a `.claude/` tree. (Projects from before harness selection existed have no recorded choice, so `upgrade` refreshes all three, preserving the old behavior.)
|
|
220
|
+
|
|
201
221
|
> **Note:** If you're upgrading from an early version, deprecated skill directories (e.g., `/joy`, `/joysmith`, `/tune`) are automatically removed during upgrade.
|
|
202
222
|
|
|
203
223
|
## Why This Exists
|