liteagents 2.24.1 → 3.5.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/CHANGELOG.md +206 -0
- package/README.md +120 -160
- package/installer/cli.js +40 -5
- package/installer/installation-engine.js +8 -0
- package/package.json +4 -3
- package/packages/ampcode/AGENT.md +11 -20
- package/packages/ampcode/agents/code-developer.md +11 -17
- package/packages/ampcode/agents/orchestrator.md +3 -3
- package/packages/ampcode/agents/quality-assurance.md +3 -1
- package/packages/ampcode/{commands/brainstorming.md → skills/brainstorming/SKILL.md} +2 -3
- package/packages/ampcode/{commands/branch-review.md → skills/branch-review/SKILL.md} +13 -13
- package/packages/{claude/commands/docs-builder.md → ampcode/skills/docs-builder/SKILL.md} +1 -1
- package/packages/ampcode/{commands/live-canvas.md → skills/live-canvas/SKILL.md} +8 -4
- package/packages/ampcode/{commands/refactor.md → skills/refactor/SKILL.md} +57 -9
- package/packages/ampcode/{commands/release.md → skills/release/SKILL.md} +4 -4
- package/packages/{claude/commands → ampcode/skills}/remember/AGENT_RULES.md +44 -84
- package/packages/ampcode/{commands/remember.md → skills/remember/SKILL.md} +86 -13
- package/packages/ampcode/{commands → skills}/remember/friction.cjs +0 -0
- package/packages/ampcode/skills/remember/stub-check.cjs +206 -0
- package/packages/ampcode/skills/remember/sync-rules.cjs +178 -0
- package/packages/ampcode/skills/remember/version-check.cjs +214 -0
- package/packages/ampcode/skills/root-cause/SKILL.md +220 -0
- package/packages/ampcode/{commands/trace-back → skills/root-cause}/find-polluter.sh +0 -0
- package/packages/{claude/commands/security.md → ampcode/skills/security/SKILL.md} +1 -1
- package/packages/{claude/commands/ship.md → ampcode/skills/ship/SKILL.md} +1 -1
- package/packages/ampcode/skills/skill-creator/LICENSE.txt +202 -0
- package/packages/ampcode/{commands/skill-creator.md → skills/skill-creator/SKILL.md} +1 -2
- package/packages/ampcode/{commands → skills}/skill-creator/scripts/init_skill.py +0 -0
- package/packages/ampcode/{commands → skills}/skill-creator/scripts/package_skill.py +0 -0
- package/packages/ampcode/{commands → skills}/skill-creator/scripts/quick_validate.py +0 -0
- package/packages/ampcode/{commands/stash.md → skills/stash/SKILL.md} +2 -1
- package/packages/{claude/commands/test-generate.md → ampcode/skills/test-generate/SKILL.md} +2 -2
- package/packages/ampcode/variants.json +2 -2
- package/packages/claude/CLAUDE.md +11 -19
- package/packages/claude/agents/code-developer.md +11 -17
- package/packages/claude/agents/orchestrator.md +4 -5
- package/packages/claude/agents/quality-assurance.md +3 -1
- package/packages/claude/skills/brainstorming/SKILL.md +1 -2
- package/packages/claude/{commands/branch-review.md → skills/branch-review/SKILL.md} +1 -1
- package/packages/{ampcode/commands/docs-builder.md → claude/skills/docs-builder/SKILL.md} +7 -7
- package/packages/claude/skills/live-canvas/SKILL.md +5 -1
- package/packages/claude/{commands/refactor.md → skills/refactor/SKILL.md} +53 -5
- package/packages/claude/{commands/release.md → skills/release/SKILL.md} +1 -1
- package/packages/{ampcode/commands → claude/skills}/remember/AGENT_RULES.md +38 -78
- package/packages/claude/{commands/remember.md → skills/remember/SKILL.md} +86 -13
- package/packages/claude/{commands → skills}/remember/friction.cjs +0 -0
- package/packages/claude/skills/remember/stub-check.cjs +206 -0
- package/packages/claude/skills/remember/sync-rules.cjs +178 -0
- package/packages/claude/skills/remember/version-check.cjs +214 -0
- package/packages/claude/skills/root-cause/SKILL.md +220 -0
- package/packages/{ampcode/commands/security.md → claude/skills/security/SKILL.md} +2 -2
- package/packages/{ampcode/commands/ship.md → claude/skills/ship/SKILL.md} +2 -2
- package/packages/claude/skills/skill-creator/SKILL.md +1 -2
- package/packages/claude/{commands/stash.md → skills/stash/SKILL.md} +2 -1
- package/packages/{ampcode/commands/test-generate.md → claude/skills/test-generate/SKILL.md} +3 -3
- package/packages/claude/variants.json +1 -2
- package/packages/droid/AGENTS.md +10 -16
- package/packages/droid/commands/brainstorming.md +1 -4
- package/packages/droid/commands/branch-review.md +11 -14
- package/packages/droid/commands/docs-builder.md +0 -3
- package/packages/droid/commands/live-canvas.md +7 -5
- package/packages/droid/commands/refactor.md +55 -10
- package/packages/droid/commands/release.md +2 -5
- package/packages/droid/commands/remember/AGENT_RULES.md +38 -78
- package/packages/droid/commands/remember/stub-check.cjs +206 -0
- package/packages/droid/commands/remember/sync-rules.cjs +178 -0
- package/packages/droid/commands/remember/version-check.cjs +214 -0
- package/packages/droid/commands/remember.md +84 -14
- package/packages/droid/commands/root-cause.md +218 -0
- package/packages/droid/commands/security.md +0 -3
- package/packages/droid/commands/ship.md +0 -3
- package/packages/droid/commands/skill-creator/LICENSE.txt +202 -0
- package/packages/droid/commands/skill-creator.md +0 -4
- package/packages/droid/commands/stash.md +0 -2
- package/packages/droid/commands/test-generate.md +1 -4
- package/packages/droid/droids/1-create-prd.md +6 -2
- package/packages/droid/droids/2-generate-tasks.md +1 -2
- package/packages/droid/droids/3-process-task-list.md +1 -2
- package/packages/droid/droids/code-developer.md +12 -19
- package/packages/droid/droids/feature-planner.md +1 -2
- package/packages/droid/droids/market-researcher.md +1 -2
- package/packages/droid/droids/orchestrator.md +3 -4
- package/packages/droid/droids/quality-assurance.md +4 -3
- package/packages/droid/droids/system-architect.md +1 -2
- package/packages/droid/droids/ui-designer.md +1 -2
- package/packages/opencode/AGENTS.md +10 -16
- package/packages/opencode/agent/code-developer.md +11 -17
- package/packages/opencode/agent/orchestrator.md +2 -2
- package/packages/opencode/agent/quality-assurance.md +3 -1
- package/packages/opencode/command/brainstorming.md +1 -4
- package/packages/opencode/command/branch-review.md +11 -15
- package/packages/opencode/command/docs-builder.md +0 -4
- package/packages/opencode/command/live-canvas.md +7 -5
- package/packages/opencode/command/refactor.md +55 -11
- package/packages/opencode/command/release.md +2 -5
- package/packages/opencode/command/remember/AGENT_RULES.md +38 -78
- package/packages/opencode/command/remember/stub-check.cjs +206 -0
- package/packages/opencode/command/remember/sync-rules.cjs +178 -0
- package/packages/opencode/command/remember/version-check.cjs +214 -0
- package/packages/opencode/command/remember.md +84 -14
- package/packages/opencode/command/root-cause.md +218 -0
- package/packages/opencode/command/security.md +0 -4
- package/packages/opencode/command/ship.md +0 -3
- package/packages/opencode/command/skill-creator/LICENSE.txt +202 -0
- package/packages/opencode/command/skill-creator.md +0 -4
- package/packages/opencode/command/stash.md +0 -3
- package/packages/opencode/command/test-generate.md +1 -5
- package/packages/opencode/opencode.jsonc +4 -34
- package/packages/subagentic-manual.md +147 -314
- package/packages/ampcode/agents/context-builder.md +0 -144
- package/packages/ampcode/commands/debug-method.md +0 -297
- package/packages/ampcode/commands/live-canvas/README.md +0 -264
- package/packages/ampcode/commands/optimize.md +0 -61
- package/packages/ampcode/commands/tdd-flow.md +0 -390
- package/packages/ampcode/commands/test-traps/example.ts +0 -158
- package/packages/ampcode/commands/test-traps.md +0 -378
- package/packages/ampcode/commands/trace-back.md +0 -176
- package/packages/ampcode/commands/verify-done.md +0 -152
- package/packages/claude/agents/context-builder.md +0 -145
- package/packages/claude/commands/optimize.md +0 -61
- package/packages/claude/plugins/live-canvas-marketplace/plugins/live-canvas-channel/README.md +0 -89
- package/packages/claude/skills/debug-method/CREATION-LOG.md +0 -119
- package/packages/claude/skills/debug-method/SKILL.md +0 -296
- package/packages/claude/skills/debug-method/test-academic.md +0 -14
- package/packages/claude/skills/debug-method/test-pressure-1.md +0 -58
- package/packages/claude/skills/debug-method/test-pressure-2.md +0 -68
- package/packages/claude/skills/debug-method/test-pressure-3.md +0 -69
- package/packages/claude/skills/live-canvas/README.md +0 -269
- package/packages/claude/skills/tdd-flow/SKILL.md +0 -392
- package/packages/claude/skills/test-traps/SKILL.md +0 -378
- package/packages/claude/skills/test-traps/example.ts +0 -158
- package/packages/claude/skills/trace-back/SKILL.md +0 -176
- package/packages/claude/skills/verify-done/SKILL.md +0 -152
- package/packages/droid/commands/debug-method.md +0 -297
- package/packages/droid/commands/live-canvas/README.md +0 -264
- package/packages/droid/commands/optimize.md +0 -61
- package/packages/droid/commands/tdd-flow.md +0 -390
- package/packages/droid/commands/test-traps/example.ts +0 -158
- package/packages/droid/commands/test-traps.md +0 -378
- package/packages/droid/commands/trace-back.md +0 -176
- package/packages/droid/commands/verify-done.md +0 -152
- package/packages/droid/droids/context-builder.md +0 -144
- package/packages/opencode/agent/context-builder.md +0 -148
- package/packages/opencode/command/debug-method.md +0 -297
- package/packages/opencode/command/live-canvas/README.md +0 -264
- package/packages/opencode/command/optimize.md +0 -61
- package/packages/opencode/command/tdd-flow.md +0 -390
- package/packages/opencode/command/test-traps/example.ts +0 -158
- package/packages/opencode/command/test-traps.md +0 -378
- package/packages/opencode/command/trace-back.md +0 -176
- package/packages/opencode/command/verify-done.md +0 -152
- /package/packages/ampcode/{commands → skills}/docs-builder/docs-builder.cjs +0 -0
- /package/packages/ampcode/{commands → skills}/live-canvas/DESIGN_PRINCIPLES.md +0 -0
- /package/packages/ampcode/{commands → skills}/live-canvas/dev/post-variants.html +0 -0
- /package/packages/ampcode/{commands → skills}/live-canvas/templates/lab-banner.html +0 -0
- /package/packages/ampcode/{commands → skills}/live-canvas/templates/overlay-vanilla.js +0 -0
- /package/packages/claude/{commands → skills}/docs-builder/docs-builder.cjs +0 -0
- /package/packages/claude/skills/{trace-back → root-cause}/find-polluter.sh +0 -0
- /package/packages/droid/commands/{trace-back → root-cause}/find-polluter.sh +0 -0
- /package/packages/opencode/command/{trace-back → root-cause}/find-polluter.sh +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,212 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
---
|
|
9
9
|
|
|
10
|
+
## [3.5.0] - 2026-09-05
|
|
11
|
+
|
|
12
|
+
### Breaking
|
|
13
|
+
- **Every capability is a skill on Claude Code and Amp.** Claude Code merged
|
|
14
|
+
custom commands into skills (`.claude/commands/deploy.md` and
|
|
15
|
+
`.claude/skills/deploy/SKILL.md` both create `/deploy`, and skills are the
|
|
16
|
+
recommended form), and Amp removed custom commands outright. So
|
|
17
|
+
`packages/claude/commands/` and `packages/ampcode/commands/` are gone, and
|
|
18
|
+
all 13 capabilities ship as `skills/<name>/SKILL.md` in both. The nine that
|
|
19
|
+
are deliberate actions — branch-review, docs-builder, refactor, release,
|
|
20
|
+
remember, security, ship, stash, test-generate — carry
|
|
21
|
+
`disable-model-invocation: true`, so Claude runs them only when you type
|
|
22
|
+
them; the four advisory ones stay auto-loadable. Bundled scripts move with
|
|
23
|
+
their skill. Droid and opencode are unchanged and still use flat commands;
|
|
24
|
+
the mirror converts for them. **Migration:** reinstall; the installer already
|
|
25
|
+
handles a `skills/` directory, and `variants.json` drops its `commands` key
|
|
26
|
+
for those two packages.
|
|
27
|
+
- **The ampcode package ships skills, not commands.** Amp removed custom slash
|
|
28
|
+
commands in favour of skills, so all 13 capabilities now live at
|
|
29
|
+
`packages/ampcode/skills/<name>/SKILL.md` — the same shape Claude Code uses.
|
|
30
|
+
`packages/ampcode/commands/` is gone. **Migration:** reinstall the ampcode
|
|
31
|
+
package; the installer already handles a `skills/` directory.
|
|
32
|
+
- **`/optimize` is removed; `/refactor` absorbs it — catalog goes 14 -> 13.**
|
|
33
|
+
It duplicated `/refactor`'s job shape (a named target, changed in place, no
|
|
34
|
+
behaviour change) and this repo's history shows it was never once used. A
|
|
35
|
+
targeted `/refactor` now runs a performance pass by default: complexity, N+1
|
|
36
|
+
queries, I/O in a loop, repeated recomputation. The grounding rule survives
|
|
37
|
+
the move — findings are always reported, but only *fixed* with real evidence
|
|
38
|
+
(a profile, a log line, or an obviously hot path); everything else is
|
|
39
|
+
reported as "uncertain, needs profiling data" and the code is left alone.
|
|
40
|
+
`/optimize`'s HITL gates move across too: multiple fix shapes, correctness
|
|
41
|
+
traded for speed, concurrency primitives, schema or response-shape changes.
|
|
42
|
+
**Migration:** use `/refactor <target>`; no flag needed.
|
|
43
|
+
- **`trace-back` is merged into `debug-method`, renamed `/root-cause` —
|
|
44
|
+
15 -> 14.** The backward walk is now Phase 1 step 5 of one skill rather than
|
|
45
|
+
a second skill you had to know to reach for. 468 lines across two files
|
|
46
|
+
became 220 in one. `find-polluter.sh` still ships.
|
|
47
|
+
- **`tdd-flow`, `test-traps` and `verify-done` are removed — 18 -> 15.** The
|
|
48
|
+
repo's own history showed the rules they carried were already being followed
|
|
49
|
+
without them; they cost context on every session to restate it.
|
|
50
|
+
|
|
51
|
+
### Added
|
|
52
|
+
- **`scripts/mirror.cjs` — the kit packages are generated, not hand-copied.**
|
|
53
|
+
`packages/claude` owns every body; each target file keeps its own
|
|
54
|
+
frontmatter byte-for-byte (that is where the per-kit shape lives — `tools`
|
|
55
|
+
arrays vs permission maps, `Bash(x:*)` vs `Bash(x *)`); the script owns the
|
|
56
|
+
path substitutions between them. `check` runs first in `npm test`, so a
|
|
57
|
+
partial sync can no longer ship. Modes: `check`, `diff`, `sync`, `shapes`.
|
|
58
|
+
- **`scripts/frontmatter.json` — the recorded per-kit frontmatter shape.**
|
|
59
|
+
Frontmatter is meant to differ per kit, so it cannot be verified by diffing.
|
|
60
|
+
It is checked against this file instead: required keys, allowed keys, and
|
|
61
|
+
the kit's `Bash()` style. Generated from the real files by `mirror.cjs
|
|
62
|
+
shapes`, never hand-written.
|
|
63
|
+
- **`docs/product/INSTALLER_GUIDE.md` gained the order of operations** for
|
|
64
|
+
changing a command, skill or subagent, from validating the bug through the
|
|
65
|
+
mirror, the three checks, the docs sweep and the release calls. Root
|
|
66
|
+
`CLAUDE.md` points at it.
|
|
67
|
+
|
|
68
|
+
### Fixed
|
|
69
|
+
|
|
70
|
+
- **Amp installs delivered no capabilities.** This release moved ampcode from
|
|
71
|
+
`commands/` to `skills/`, but `packages/ampcode/variants.json` was left
|
|
72
|
+
declaring only `agents`. The installer selects content by that field, so
|
|
73
|
+
`selectVariantContent()` returned an empty skills list and an Amp install
|
|
74
|
+
carried 10 agents and zero of the 13 capabilities. Added `"skills": "*"`.
|
|
75
|
+
Caught by `prepublishOnly`'s package validator, which is why the first cut never
|
|
76
|
+
reached the registry.
|
|
77
|
+
- `scripts/validate-package.js` still mapped ampcode's capability directory to
|
|
78
|
+
`commands`; it is `skills`.
|
|
79
|
+
- **Test-count floors realigned.** The Multi-Tool Installation floor moved
|
|
80
|
+
36 -> 41 (33 to match the capability cut, then +8 for the new
|
|
81
|
+
variant-selection assertions; Claude has no `commands/`
|
|
82
|
+
directory now, so the suite counts three categories per scenario, not four),
|
|
83
|
+
and four floors that had drifted below their suites' actual counts were
|
|
84
|
+
raised to match: docs-builder 497 -> 538, friction 254 -> 323, sync-rules
|
|
85
|
+
15 -> 25, stub-check 19 -> 24. Each floor was verified to still fail when
|
|
86
|
+
set one above actual.
|
|
87
|
+
- **Command frontmatter was largely invented.** Checked against each tool's own
|
|
88
|
+
docs: `usage:` is not a field in any of the four. Droid commands support only
|
|
89
|
+
`description` and `argument-hint` (tool scoping is explicitly unavailable for
|
|
90
|
+
commands); opencode commands support only `description`, `agent`, `model` and
|
|
91
|
+
`subtask`, and take their name from the filename; Claude Code command files
|
|
92
|
+
ignore `name`. Every unsupported key is removed, so the `allowed-tools` those
|
|
93
|
+
files carried — which did nothing on droid or opencode — is gone. Droid
|
|
94
|
+
subagents lose `when_to_use`, which is not a Factory field; its text is
|
|
95
|
+
folded into `description`, which is what Factory reads for routing.
|
|
96
|
+
`scripts/frontmatter.json` now records the real per-kit schemas and
|
|
97
|
+
`mirror.cjs check` enforces them.
|
|
98
|
+
- **Three kits were sending users to the wrong memory directory.**
|
|
99
|
+
`/branch-review`, `/refactor` and `/release` told droid, ampcode and
|
|
100
|
+
opencode users to look in `.claude/remember/` instead of their own
|
|
101
|
+
`.factory/`, `.amp/` or `.opencode/`. Found by the new mirror check.
|
|
102
|
+
- **`1-create-prd.md` had silently lost five checklist lines in droid only**,
|
|
103
|
+
from an earlier partial hand-mirror. 22 drifted or missing files were
|
|
104
|
+
restored in total, including `skill-creator/LICENSE.txt`, which its own
|
|
105
|
+
frontmatter cites and which was absent from all three kits.
|
|
106
|
+
- **`docs-builder.md` carried claude's `Bash(node:*)` syntax in all three
|
|
107
|
+
other kits**, where the correct form is `Bash(node *)`.
|
|
108
|
+
- **Only a symlink that actually leaves the repo counts as an escape.** The
|
|
109
|
+
previous check flagged in-repo links too; mirrored to all four kits.
|
|
110
|
+
|
|
111
|
+
### Changed
|
|
112
|
+
|
|
113
|
+
- `npm test` now runs `scripts/validate-package.js` as its last step, so the
|
|
114
|
+
publish-time validator runs locally instead of only inside `publish.yml`.
|
|
115
|
+
The first cut's gate went green on a package publish then rejected.
|
|
116
|
+
- New `testVariantSelectionDelivers` in the multi-tool suite asserts what the
|
|
117
|
+
installer actually *selects* per tool, not what the package tree contains.
|
|
118
|
+
The existing scenarios copy the whole tree and read `variants.json` only to
|
|
119
|
+
check the variant key exists, so they could not see a missing content field.
|
|
120
|
+
- Six commands and skills that had no `allowed-tools` at all — `remember`,
|
|
121
|
+
`stash`, `brainstorming`, `live-canvas`, `root-cause`, `skill-creator` — now
|
|
122
|
+
declare a `Read, Grep, Glob` floor, so those calls stop prompting. Subagents
|
|
123
|
+
are deliberately untouched: claude and ampcode omit `tools` and so inherit
|
|
124
|
+
everything, droid already lists all three, and opencode's `tools` is a
|
|
125
|
+
write/edit/bash permission map where they are not expressible.
|
|
126
|
+
- README and `packages/subagentic-manual.md` rewritten to lead with the
|
|
127
|
+
catalog rather than a pitch.
|
|
128
|
+
- Command READMEs live in `docs/product/` and no longer ship inside the
|
|
129
|
+
packages; the live-canvas-channel README moved out too.
|
|
130
|
+
- `AGENT_RULES.md` testing standards are stated as principles rather than as
|
|
131
|
+
pytest specifics.
|
|
132
|
+
|
|
133
|
+
## [3.0.0] - 2026-09-04
|
|
134
|
+
|
|
135
|
+
### Breaking
|
|
136
|
+
- **The `context-builder` subagent is removed — catalog goes 11 -> 10 agents.**
|
|
137
|
+
`docs-builder` supersedes its Tier 2/3 work (creating/splitting `docs/*.md`,
|
|
138
|
+
validated on real corpora; `docs/index.md` via `index-flat` is the sole index,
|
|
139
|
+
same reason `docs/wiki-index.md` was already deleted). Tier 1 (author
|
|
140
|
+
`CLAUDE.md`) was the only unique part, and its one load-bearing invariant —
|
|
141
|
+
`CLAUDE.md` must `@`-include `.claude/remember/MEMORY.md` and nothing else —
|
|
142
|
+
is now a mechanical gate in `stub-check.cjs`, run every `/remember`; a prose
|
|
143
|
+
rule inside a subagent was always the weaker enforcement. **Migration:** for
|
|
144
|
+
the doc-authoring work `context-builder` did, use `/docs-builder`; for a
|
|
145
|
+
cold-start `CLAUDE.md` on a brand-new project, use Claude Code's own `/init`.
|
|
146
|
+
Orchestrator routing's Brownfield workflow now starts at `system-architect`.
|
|
147
|
+
|
|
148
|
+
### Security
|
|
149
|
+
- **`sync-rules.cjs` and `stub-check.cjs` no longer write through a symlink out
|
|
150
|
+
of the repo they were invoked on.** `/remember` runs across a fleet of sibling
|
|
151
|
+
checkouts, so a relative link only has to reach a neighbor. Three routes were
|
|
152
|
+
reproduced and closed: a dangling link at the write target (followed by
|
|
153
|
+
`writeFileSync` as if the file were merely absent), a symlinked parent
|
|
154
|
+
directory (invisible to a leaf-only `lstat` guard), and a symlinked
|
|
155
|
+
`CLAUDE.md` that `stub-check.cjs` rewrote in place with no rename-away step.
|
|
156
|
+
`escapesRepo()` resolves the deepest existing ancestor with `realpath` and
|
|
157
|
+
confirms the write still lands inside the repo, `lstat`-ing the leaf for the
|
|
158
|
+
dangling case; refusal is loud (an `escapes` action / a skip message), never
|
|
159
|
+
silent. Mirrored to all four kits.
|
|
160
|
+
|
|
161
|
+
### Added
|
|
162
|
+
- **`AGENT_RULES.md` is now kept current in every repo, instead of written once and
|
|
163
|
+
forgotten.** `remember/sync-rules.cjs` byte-compares the repo copy against the
|
|
164
|
+
template shipped beside it on every `/remember` run: identical does nothing at all,
|
|
165
|
+
absent copies it in, and a differing body is moved to a single `AGENT_RULES.md.bak`
|
|
166
|
+
before the new one lands. The `.bak` is one file, deliberately — a customised body
|
|
167
|
+
survives exactly one release, so fold your changes in before the next update. This
|
|
168
|
+
replaced a bootstrap-once rule that had left a measured 35 local repos many releases
|
|
169
|
+
behind, after three hand sweeps failed to hold.
|
|
170
|
+
- **`remember/stub-check.cjs` asserts the config stub's SHAPE and repairs it.** v2.19
|
|
171
|
+
demoted `AGENT_RULES.md` from an `@`-include to a plain pointer — an `@`-include
|
|
172
|
+
hot-loads ~300 lines into every session — but nothing enforced it, and 21 of 37
|
|
173
|
+
measured repos had drifted back. It also repairs a MEMORY include that is not
|
|
174
|
+
`@<dir>/remember/MEMORY.md`, since a bare `@MEMORY.md` resolves to a nonexistent
|
|
175
|
+
root file and hot memory then silently never loads. It edits only *inside* the
|
|
176
|
+
marker pairs and only the mechanism; the prose in those blocks stays user-owned.
|
|
177
|
+
It will **not** repoint a MEMORY include at a file that does not exist — a repo
|
|
178
|
+
still on the pre-rename `.claude/memory/` layout has a live file at the old path,
|
|
179
|
+
and breaking a working include to satisfy a naming convention is worse than saying
|
|
180
|
+
so.
|
|
181
|
+
- **`remember/version-check.cjs` nudges when the installed liteagents is behind.**
|
|
182
|
+
One line in `/remember` step 0, advice only — it never installs. Any failure
|
|
183
|
+
(offline, DNS, timeout) is a silent skip, because a memory command that hangs on a
|
|
184
|
+
network call is worse than one that misses a nudge. The installer now stamps
|
|
185
|
+
`liteagents_version` into its manifest so the check does not shell out to
|
|
186
|
+
`npm ls -g` on every run (measured 502ms -> 113ms warm).
|
|
187
|
+
- **The installer says where your backup went.** On a reinstall it now closes with the
|
|
188
|
+
path of every install it moved aside, and notes that an edited `AGENT_RULES.md` is
|
|
189
|
+
preserved in the backup's `remember/` folder. A fresh install's output is unchanged.
|
|
190
|
+
|
|
191
|
+
### Changed
|
|
192
|
+
- **`/remember` reports every write verbatim.** Step 8 relays exactly what
|
|
193
|
+
`version-check.cjs`, `sync-rules.cjs` and `stub-check.cjs` printed, and nothing when
|
|
194
|
+
they printed nothing. Paraphrasing could drop the `AGENT_RULES.md.bak` filename,
|
|
195
|
+
which is the one thing someone who just lost their edits needs.
|
|
196
|
+
- **The stub check survives a quiet run.** Step 1's guard stops the run when there are
|
|
197
|
+
no unprocessed stashes and no friction output — which is exactly the state of a
|
|
198
|
+
stale, unattended repo. `stub-check.cjs` now runs before that stop; skipping it on
|
|
199
|
+
quiet runs is how a repo with nothing to remember stayed broken forever.
|
|
200
|
+
- **`/refactor` hands the review back instead of chaining it.** Step 6's "commit, then
|
|
201
|
+
run `/branch-review`" read as a sequence to execute; a field run started the review
|
|
202
|
+
off the owner's "commit" and the owner objected. It now states that this is a
|
|
203
|
+
sentence to say, that both are the user's separate calls, and that "commit"/"yes"/"go"
|
|
204
|
+
authorizes the commit and nothing after it.
|
|
205
|
+
|
|
206
|
+
### Fixed
|
|
207
|
+
- Four places stated the memory-include mechanism using the broken bare `@MEMORY.md`
|
|
208
|
+
form, including an anti-pattern table an agent reads before writing the config.
|
|
209
|
+
- `poc/friction-file-referents/README.md` claimed everything needed to audit it was in
|
|
210
|
+
the directory. `score.py` reproduces only the LLM-experiment table (Findings 4-6);
|
|
211
|
+
the mechanical-study numbers (Findings 2-3) come from a run whose script was never
|
|
212
|
+
committed. Now stated precisely.
|
|
213
|
+
|
|
214
|
+
---
|
|
215
|
+
|
|
10
216
|
## [2.24.1] - 2026-09-03
|
|
11
217
|
|
|
12
218
|
### Changed
|
package/README.md
CHANGED
|
@@ -9,201 +9,169 @@
|
|
|
9
9
|
╚══════╝╚═╝ ╚═╝ ╚══════╝╚═╝ ╚═╝ ╚═════╝ ╚══════╝╚═╝ ╚═══╝ ╚═╝ ╚══════╝
|
|
10
10
|
```
|
|
11
11
|
|
|
12
|
-
**
|
|
12
|
+
**10 specialized agents · 13 commands & skills · Claude · Opencode · Ampcode · Droid**
|
|
13
13
|
|
|
14
14
|
<p align="center">
|
|
15
|
-
<img src="https://img.shields.io/github/package-json/v/hamr0/liteagents?label=version&color=2a4f8c" alt="version
|
|
15
|
+
<img src="https://img.shields.io/github/package-json/v/hamr0/liteagents?label=version&color=2a4f8c" alt="version">
|
|
16
16
|
<img src="https://img.shields.io/badge/license-Apache%202.0-2a4f8c" alt="license: Apache 2.0">
|
|
17
17
|
</p>
|
|
18
18
|
|
|
19
|
-
**Supported Tools:**
|
|
20
|
-
[](https://claude.ai)
|
|
21
|
-
[](https://github.com/hamr0/opencode)
|
|
22
|
-
[](https://github.com/hamr0/ampcode)
|
|
23
|
-
[](https://github.com/hamr0/droid)
|
|
24
|
-
|
|
25
19
|
</div>
|
|
26
20
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
21
|
+
Liteagents started as scaffolding for early LLMs that needed to be told everything.
|
|
22
|
+
It isn't that anymore. Models got smarter, so the toolkit got thinner: specialists you
|
|
23
|
+
call by name or that trigger themselves on domain, wide lanes instead of tight rails,
|
|
24
|
+
constraints on *what* rather than scripts for *how*.
|
|
30
25
|
|
|
31
|
-
|
|
26
|
+
It is actively challenged, pruned and rewritten — things get renamed, added, and
|
|
27
|
+
deleted as models improve. That churn is the point.
|
|
32
28
|
|
|
33
29
|
```bash
|
|
34
|
-
#
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
# Option 2: Global install (never use sudo)
|
|
38
|
-
npm install -g liteagents
|
|
39
|
-
liteagents
|
|
40
|
-
|
|
41
|
-
# If permission errors:
|
|
42
|
-
# mkdir -p ~/.npm-global && npm config set prefix '~/.npm-global'
|
|
43
|
-
# echo 'export PATH=~/.npm-global/bin:$PATH' >> ~/.bashrc && source ~/.bashrc
|
|
30
|
+
npx liteagents # recommended
|
|
31
|
+
# or: npm install -g liteagents && liteagents (never sudo)
|
|
44
32
|
```
|
|
45
33
|
|
|
46
|
-
|
|
34
|
+
<sub>Permission errors? `mkdir -p ~/.npm-global && npm config set prefix '~/.npm-global'`, then add `~/.npm-global/bin` to your `PATH`.</sub>
|
|
47
35
|
|
|
48
|
-
|
|
49
|
-
- **Opencode** - 11 agent references + 18 commands
|
|
50
|
-
- **Ampcode** - 11 subagents + 18 commands
|
|
51
|
-
- **Droid** - 11 agent references + 18 commands
|
|
36
|
+
---
|
|
52
37
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
38
|
+
## The catalog
|
|
39
|
+
|
|
40
|
+
**Agents** — invoke with `@name` (Claude Code) or `/name`.
|
|
41
|
+
|
|
42
|
+
| Agent | What it's for |
|
|
43
|
+
|---|---|
|
|
44
|
+
| `1-create-prd` | Define scope as a PRD — a portal into the work, not a spec to obey |
|
|
45
|
+
| `2-generate-tasks` | Break a PRD into granular, actionable tasks |
|
|
46
|
+
| `3-process-task-list` | Execute tasks one at a time with review checkpoints |
|
|
47
|
+
| `orchestrator` | Read intent, route to the right agent sequence |
|
|
48
|
+
| `code-developer` | Implementation, debugging, refactoring |
|
|
49
|
+
| `quality-assurance` | Test architecture, quality gates, risk assessment |
|
|
50
|
+
| `feature-planner` | Epics, user stories, prioritization, backlog |
|
|
51
|
+
| `market-researcher` | Market and competitive analysis, project discovery |
|
|
52
|
+
| `system-architect` | System design, tech selection, API design, scale |
|
|
53
|
+
| `ui-designer` | UI/UX, wireframes, prototypes, design systems |
|
|
54
|
+
|
|
55
|
+
**Commands & skills** — `/name`.
|
|
56
|
+
|
|
57
|
+
| Command | What it's for |
|
|
58
|
+
|---|---|
|
|
59
|
+
| `/stash` | Snapshot this session's context before compaction or handoff |
|
|
60
|
+
| `/remember` | Fold stashes + friction into hot project memory |
|
|
61
|
+
| `/docs-builder` | Reorg, index, and split a docs corpus so search actually finds things |
|
|
62
|
+
| `/branch-review` | Full pre-merge review — blockers reported, nits to the fix ledger |
|
|
63
|
+
| `/refactor` | Clear the fix ledger; with args, refactor and optimize a named area |
|
|
64
|
+
| `/release` | Docs sweep, version bump, local commit, then hand back the merge sequence |
|
|
65
|
+
| `/security` | Standalone vulnerability audit (also stage 2 of `/branch-review`) |
|
|
66
|
+
| `/ship` | Mechanical pre-deploy gate — tests, build, tree state, pass/fail only |
|
|
67
|
+
| `/test-generate` | Generate a test suite and verify each test exercises real code |
|
|
68
|
+
| `/brainstorming` | Turn a rough idea into a formed design by questioning |
|
|
69
|
+
| `/root-cause` | Find the cause before changing code — evidence, backward trace, one hypothesis, fix at the source |
|
|
70
|
+
| `/live-canvas` | UI variations with click-to-annotate feedback in the browser |
|
|
71
|
+
| `/skill-creator` | Build a new skill |
|
|
72
|
+
|
|
73
|
+
<sub>Claude Code and Amp ship all 13 as skills; Opencode and Droid expose all 13 as commands. All four also ship agent reference docs.</sub>
|
|
56
74
|
|
|
57
|
-
|
|
75
|
+
---
|
|
58
76
|
|
|
59
|
-
|
|
60
|
-
# Claude Code examples
|
|
61
|
-
@orchestrator help
|
|
62
|
-
@1-create-prd Create a PRD for a task management app
|
|
63
|
-
/brainstorming Explore authentication approaches
|
|
64
|
-
/tdd-flow Implement user login
|
|
65
|
-
|
|
66
|
-
# Opencode/Ampcode/Droid examples
|
|
67
|
-
/1-create-prd Create a PRD for a task management app
|
|
68
|
-
/brainstorming Explore authentication approaches
|
|
69
|
-
/tdd-flow Implement user login
|
|
70
|
-
```
|
|
77
|
+
## The ones that carry the load
|
|
71
78
|
|
|
72
|
-
|
|
79
|
+
### `AGENT_RULES.md` — the architect behind every project
|
|
73
80
|
|
|
74
|
-
|
|
81
|
+
One lightweight, generic, model-agnostic rules doc. It sets **what** matters and leaves
|
|
82
|
+
wide room on **how**: simple over clever, every line has a purpose, surgical changes,
|
|
83
|
+
exhaust the stdlib before reaching for a dependency, POC before you design.
|
|
75
84
|
|
|
76
|
-
|
|
85
|
+
With smarter models a PRD is a **portal, not a deliverable** — the start of a
|
|
86
|
+
conversation. You discover it module by module, reviewing, changing and deleting as
|
|
87
|
+
experience arrives, instead of pinning everything down up front.
|
|
77
88
|
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
capture analyze + consolidate
|
|
81
|
-
```
|
|
89
|
+
It is loaded every session, linked from `CLAUDE.md`, and `/remember` keeps it fresh —
|
|
90
|
+
each run byte-compares your copy against the template that shipped with your install.
|
|
82
91
|
|
|
83
|
-
|
|
84
|
-
|
|
92
|
+
| your copy | what happens |
|
|
93
|
+
|---|---|
|
|
94
|
+
| identical | nothing — no write, no output |
|
|
95
|
+
| missing | copied in |
|
|
96
|
+
| different | moved to `AGENT_RULES.md.bak`, template copied in, both reported |
|
|
85
97
|
|
|
86
|
-
|
|
98
|
+
Edits are never destroyed, but they aren't preserved in place either. `.bak` is a
|
|
99
|
+
*single* file the next update overwrites — a customised body survives one release, not two.
|
|
87
100
|
|
|
88
|
-
|
|
101
|
+
### `/stash` → `/remember` — the daily driver
|
|
89
102
|
|
|
90
103
|
```
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
web-client 0% BAD (0/1) median: 0.0 ✅
|
|
104
|
+
/stash ──► /remember
|
|
105
|
+
capture consolidate
|
|
106
|
+
```
|
|
95
107
|
|
|
96
|
-
|
|
97
|
-
|
|
108
|
+
**`/stash`** is project-local: one session, one feature or scope or goal. Start fresh
|
|
109
|
+
on delivery, or when context hits ~30% (never past 40%). The stash is the clean handoff
|
|
110
|
+
to the next session.
|
|
98
111
|
|
|
99
|
-
|
|
100
|
-
|
|
112
|
+
**`/remember`** fires on the nudge every 5 stashes. It folds those 5 in — and it also
|
|
113
|
+
reads across *all* your projects, mining session logs for where you and the model
|
|
114
|
+
actually collided: corrections, dead ends, abandoned flows. Those become rules, so the
|
|
115
|
+
next session is less wrong than this one.
|
|
101
116
|
|
|
102
|
-
|
|
117
|
+
Markdown files, no database, no RAG, always hot in context, and it keeps the nuances of
|
|
118
|
+
each project separate. Runs on a mid-tier model.
|
|
103
119
|
|
|
104
|
-
|
|
120
|
+
### `/docs-builder` — the other daily driver
|
|
105
121
|
|
|
106
|
-
|
|
122
|
+
Markdown gets out of hand. A token-hungry agent then can't find the knowledge that
|
|
123
|
+
matters. (Its own PRD grew from 500 lines to 3k+ as findings piled in — exactly the
|
|
124
|
+
problem it exists to solve.)
|
|
107
125
|
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
**Workflow Agents (3):**
|
|
113
|
-
- **1-create-prd** - Define scope with structured Product Requirement Documents
|
|
114
|
-
- **2-generate-tasks** - Break PRDs into granular, actionable task lists
|
|
115
|
-
- **3-process-task-list** - Execute tasks iteratively with progress tracking and review checkpoints
|
|
116
|
-
|
|
117
|
-
**Specialist Agents (8):**
|
|
118
|
-
- **orchestrator** - Analyze intent, coordinate workflows, route to optimal agent sequences
|
|
119
|
-
- **code-developer** - Implementation, debugging, refactoring, code best practices
|
|
120
|
-
- **quality-assurance** - Test architecture, quality gates, requirements traceability, risk assessment
|
|
121
|
-
- **context-builder** - Initialize project context, discover documentation, create knowledge bases
|
|
122
|
-
- **feature-planner** - Epics, user stories, prioritization, backlog management, retrospectives
|
|
123
|
-
- **market-researcher** - Market analysis, competitive research, project discovery, brainstorming
|
|
124
|
-
- **system-architect** - System design, technology selection, API design, scalability planning
|
|
125
|
-
- **ui-designer** - UI/UX design, wireframes, prototypes, accessibility, design systems
|
|
126
|
-
|
|
127
|
-
### 18 Commands/Skills
|
|
128
|
-
|
|
129
|
-
**Auto-Triggering Skills (3)** - Claude Code only:
|
|
130
|
-
- **tdd-flow** - Write test first, watch fail, minimal passing code
|
|
131
|
-
- **test-traps** - Prevent mocking anti-patterns
|
|
132
|
-
- **verify-done** - Verify before claiming done
|
|
133
|
-
|
|
134
|
-
**Manual Skills/Commands (15):**
|
|
135
|
-
|
|
136
|
-
*Hot Memory Pipeline (2)* — see the [Hot Memory](#hot-memory--project-local-learning-from-your-own-sessions) section above for the full walkthrough:
|
|
137
|
-
- **stash** - Snapshot session context to `.claude/stash/` before compaction, handoff, or ending complex work
|
|
138
|
-
- **remember** - Consolidate stashes + friction antigens into `.claude/remember/MEMORY.md`; auto-injected via `@.claude/remember/MEMORY.md`
|
|
139
|
-
|
|
140
|
-
*Design*:
|
|
141
|
-
- **live-canvas** - Design UI variations with click-to-annotate feedback in the browser; ships a companion MCP channel plugin for Claude Code so Saves stream into the session in real time. Other tools use batch mode.
|
|
142
|
-
|
|
143
|
-
*Workflow & analysis*:
|
|
144
|
-
- **brainstorming** - Structured brainstorming sessions
|
|
145
|
-
- **docs-builder** - Reorg a docs corpus, split an oversized doc, search it, keep pages current, index them
|
|
146
|
-
- **trace-back** - Trace bugs backward through call stack
|
|
147
|
-
- **skill-creator** - Guide for creating new skills
|
|
148
|
-
- **debug-method** - Four-phase debugging framework
|
|
149
|
-
- **optimize** - Performance analysis
|
|
150
|
-
- **refactor** - Safe refactoring with behavior preservation; with no arguments, works through the fix ledger `/branch-review` accumulated
|
|
151
|
-
- **branch-review** - Pre-merge gate that reports and never fixes: general review at a chosen effort level, a full security audit that runs at full depth regardless of level, then an adversarial verify pass. Needs a clean tree. Only reproduced Critical/High failures block; everything else lands in the fix ledger for `/refactor`
|
|
152
|
-
- **security** - Standalone vulnerability scan; also runs as stage 2 of `/branch-review`
|
|
153
|
-
- **ship** - Mechanical pre-deploy gate: every item is answerable by running a command and reading its exit code, recorded as pass/fail/N/A. A check not run is a fail, and N/A needs a stated reason
|
|
154
|
-
- **release** - Prepare a release on the current branch: verify → docs sweep → version bump → local commit, then hand back the merge/tag/publish sequence (never pushes). Refuses without a review recorded at the current HEAD SHA
|
|
155
|
-
- **test-generate** - Generate test suites
|
|
156
|
-
|
|
157
|
-
> **Claude-only plugin:** `live-canvas-channel` is a bundled Claude Code MCP channel plugin that ships under `~/.claude/plugins/live-canvas-marketplace/`. One-time `/plugin install` + a session started with `--dangerously-load-development-channels` unlocks live mode. Skill probes for the channel on each invocation and handholds setup when missing. See [`packages/claude/skills/live-canvas/README.md`](packages/claude/skills/live-canvas/README.md) for the full walkthrough.
|
|
126
|
+
It indexes everything under `/docs` in four buckets — `product/`, `logs/`, `wiki/`,
|
|
127
|
+
`archive/` — reorganizes, indexes, and splits oversized docs so you don't have to.
|
|
128
|
+
Mid-tier model.
|
|
158
129
|
|
|
159
|
-
|
|
130
|
+
### `/live-canvas` — the UI every agent CLI was missing
|
|
160
131
|
|
|
161
|
-
|
|
132
|
+
A terminal agent can't see your screen, and you can't describe "that padding, on that
|
|
133
|
+
card, but only on mobile" in words without burning ten minutes.
|
|
162
134
|
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
| **[subagentic-manual.md](packages/subagentic-manual.md)** | Detailed agent/command reference |
|
|
167
|
-
| **[remember-README.md](docs/product/remember-README.md)** | How hot memory works — the `/stash` → `/remember` pipeline, the friction sensor, and the antigen ledger |
|
|
168
|
-
| **[docs-builder-README.md](docs/product/docs-builder-README.md)** | How `/docs-builder` works — the reorg/cleanup modes, what it measurably costs, and the ledger that tracks doc drift |
|
|
169
|
-
| **[branch-review-README.md](docs/product/branch-review-README.md)** | How the pre-merge gate works — the three stages, what blocks a merge, and the `/branch-review` → fix ledger → `/refactor` loop |
|
|
135
|
+
`/live-canvas` spins up one lightweight localhost page with your UI on it. You **click
|
|
136
|
+
the thing that needs changing**, type what you want, and submit. Comment on as many
|
|
137
|
+
elements as you like, all in one pass, then send the batch to the agent.
|
|
170
138
|
|
|
171
|
-
|
|
139
|
+
Two ways it comes back:
|
|
172
140
|
|
|
173
|
-
|
|
141
|
+
- **JSON mode** — feedback lands in a file, you tell the agent to read it. Works in any tool.
|
|
142
|
+
- **Live mode** — an MCP channel streams each comment straight into the session, so edits
|
|
143
|
+
land while you're still in the browser. Claude Code only.
|
|
174
144
|
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
@orchestrator I need to add user authentication
|
|
178
|
-
# Orchestrator routes to:
|
|
179
|
-
# → market-researcher (research approaches)
|
|
180
|
-
# → 1-create-prd (requirements)
|
|
181
|
-
# → 2-generate-tasks (implementation tasks)
|
|
182
|
-
# → 3-process-task-list (execution)
|
|
183
|
-
```
|
|
145
|
+
It also ships with real UI direction baked in, so it can generate variations of a screen
|
|
146
|
+
for you to pick from — no more hours spent nudging divs to find out what you actually wanted.
|
|
184
147
|
|
|
185
|
-
|
|
186
|
-
```
|
|
187
|
-
@quality-assurance Review this PR before merge
|
|
188
|
-
/branch-review main medium # review + security audit; blockers reported, the rest to the fix ledger
|
|
189
|
-
/refactor # no args: work through the fix ledger branch-review accumulated, between features
|
|
190
|
-
/debug-method Investigate this race condition
|
|
191
|
-
```
|
|
148
|
+
### `/branch-review` → `/release` → `/refactor`
|
|
192
149
|
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
150
|
+
- **`/branch-review`** — the powerhouse. Reviews every change on a branch, medium depth
|
|
151
|
+
by default. Surfaces confirmed blockers only: real bugs, dead and unused code,
|
|
152
|
+
state-ownership breaks, plus a full OWASP-shaped security pass (no leaked keys, no
|
|
153
|
+
injection, trust boundaries checked) that runs at full depth regardless of level.
|
|
154
|
+
Everything non-blocking goes to the fix ledger.
|
|
155
|
+
- **`/release`** — does the pre-release chores you'd otherwise do by hand: README,
|
|
156
|
+
CHANGELOG, PRD, findings, version bump, local commit. Then it tells you you're ready
|
|
157
|
+
to merge, and hands the sequence back. It never pushes.
|
|
158
|
+
- **`/refactor`** — with no arguments, works the fix ledger. Cumulative by design: nits
|
|
159
|
+
pile up until you choose to clear them, so review and release never drown in them.
|
|
198
160
|
|
|
199
161
|
---
|
|
200
162
|
|
|
201
|
-
##
|
|
163
|
+
## Deeper docs
|
|
202
164
|
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
-
|
|
206
|
-
|
|
165
|
+
| Document | What's in it |
|
|
166
|
+
|---|---|
|
|
167
|
+
| [`/remember`](docs/product/remember-README.md) | The `/stash` → `/remember` pipeline, friction sensor, antigen ledger |
|
|
168
|
+
| [`/docs-builder`](docs/product/docs-builder-README.md) | Reorg and cleanup modes, measured cost, the drift ledger |
|
|
169
|
+
| [`/branch-review`](docs/product/branch-review-README.md) | The three stages, what blocks, the fix-ledger loop |
|
|
170
|
+
| [`/live-canvas`](docs/product/live-canvas-README.md) | Both modes, the click-to-annotate overlay, and setup |
|
|
171
|
+
| [live-canvas-channel](docs/product/live-canvas-channel-README.md) | The Claude Code MCP channel plugin — install, protocol, debugging |
|
|
172
|
+
| [Installer guide](docs/product/INSTALLER_GUIDE.md) | Install, custom paths, uninstall, troubleshooting, FAQ — and how to change a command, skill or subagent |
|
|
173
|
+
| [All agents & commands](packages/subagentic-manual.md) | Full agent and command reference |
|
|
174
|
+
| [Doc index](docs/index.md) | Generated index of every doc, rebuilt on each reorg |
|
|
207
175
|
|
|
208
176
|
---
|
|
209
177
|
|
|
@@ -213,12 +181,4 @@ Results land in `.claude/remember/friction/antigen_review.md` with projects, err
|
|
|
213
181
|
- **GitHub:** https://github.com/hamr0/liteagents
|
|
214
182
|
- **Issues:** https://github.com/hamr0/liteagents/issues
|
|
215
183
|
|
|
216
|
-
---
|
|
217
|
-
|
|
218
|
-
## License
|
|
219
|
-
|
|
220
184
|
Apache-2.0 © 2026 hamr0 — see [LICENSE](LICENSE).
|
|
221
|
-
|
|
222
|
-
---
|
|
223
|
-
|
|
224
|
-
**Need help?** See the [Installer Guide](docs/product/INSTALLER_GUIDE.md) or [open an issue](https://github.com/hamr0/liteagents/issues)
|
package/installer/cli.js
CHANGED
|
@@ -13,13 +13,16 @@
|
|
|
13
13
|
const fs = require('fs');
|
|
14
14
|
const path = require('path');
|
|
15
15
|
const readline = require('readline');
|
|
16
|
+
const os = require('os');
|
|
16
17
|
|
|
17
18
|
// Single source of truth for version; UPDATE_VERSION.sh bumps only package.json.
|
|
18
19
|
const PACKAGE_JSON = require('../package.json');
|
|
19
20
|
const PACKAGE_VERSION = PACKAGE_JSON.version;
|
|
20
21
|
// Banner counts derived from the description field — same source as README.
|
|
21
|
-
const AGENT_COUNT = (PACKAGE_JSON.description.match(/(\d+)\s+specialized agents/) || [, '
|
|
22
|
-
|
|
22
|
+
const AGENT_COUNT = (PACKAGE_JSON.description.match(/(\d+)\s+specialized agents/) || [, '10'])[1];
|
|
23
|
+
// Claude Code and Amp ship these as skills, Droid and opencode as commands,
|
|
24
|
+
// so the banner counts capabilities rather than naming one shape.
|
|
25
|
+
const CAPABILITY_COUNT = (PACKAGE_JSON.description.match(/(\d+)\s+capabilities/) || [, '13'])[1];
|
|
23
26
|
|
|
24
27
|
// ANSI color codes
|
|
25
28
|
const colors = {
|
|
@@ -30,9 +33,35 @@ const colors = {
|
|
|
30
33
|
yellow: '\x1b[33m',
|
|
31
34
|
cyan: '\x1b[36m',
|
|
32
35
|
magenta: '\x1b[35m',
|
|
33
|
-
red: '\x1b[31m'
|
|
36
|
+
red: '\x1b[31m',
|
|
37
|
+
dim: '\x1b[2m'
|
|
34
38
|
};
|
|
35
39
|
|
|
40
|
+
/**
|
|
41
|
+
* Render the closing note about backed-up installs, printed after `Done!`.
|
|
42
|
+
* Returns '' when backupLog is empty so a fresh install's output is
|
|
43
|
+
* unchanged. Never names `commands/` vs `command/` (opencode uses the
|
|
44
|
+
* singular form) — the note points at the shared `remember/` folder inside
|
|
45
|
+
* the backup, which is the same for every tool.
|
|
46
|
+
*
|
|
47
|
+
* @param {Array<{original: string, backup: string}>} backupLog
|
|
48
|
+
* @returns {string} Text to print (includes its own leading newline), or ''.
|
|
49
|
+
*/
|
|
50
|
+
function formatBackupClosingNote(backupLog) {
|
|
51
|
+
if (!backupLog || backupLog.length === 0) {
|
|
52
|
+
return '';
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
const lines = [`${colors.yellow}Previous install(s) backed up:${colors.reset}`];
|
|
56
|
+
for (const entry of backupLog) {
|
|
57
|
+
lines.push(` ${entry.backup.replace(os.homedir(), '~')}`);
|
|
58
|
+
}
|
|
59
|
+
lines.push(`${colors.dim}If you had edited AGENT_RULES.md, your copy is preserved in`);
|
|
60
|
+
lines.push(`each backup's remember/ folder.${colors.reset}`);
|
|
61
|
+
|
|
62
|
+
return `\n${lines.join('\n')}`;
|
|
63
|
+
}
|
|
64
|
+
|
|
36
65
|
class InteractiveInstaller {
|
|
37
66
|
constructor() {
|
|
38
67
|
this.rl = readline.createInterface({
|
|
@@ -463,7 +492,7 @@ ${colors.bright}${colors.cyan}██╔══██║██║ ██║█
|
|
|
463
492
|
${colors.bright}${colors.cyan}██║ ██║╚██████╔╝███████╗██║ ╚████║ ██║ ██║╚██████╗ ██║ ██╗██║ ██║${colors.reset}
|
|
464
493
|
${colors.bright}${colors.cyan}╚═╝ ╚═╝ ╚═════╝ ╚══════╝╚═╝ ╚═══╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝${colors.reset}
|
|
465
494
|
|
|
466
|
-
${colors.bright}v${PACKAGE_VERSION} | ${AGENT_COUNT} agents + ${
|
|
495
|
+
${colors.bright}v${PACKAGE_VERSION} | ${AGENT_COUNT} agents + ${CAPABILITY_COUNT} capabilities per tool${colors.reset}
|
|
467
496
|
`);
|
|
468
497
|
}
|
|
469
498
|
|
|
@@ -701,6 +730,11 @@ ${colors.bright}v${PACKAGE_VERSION} | ${AGENT_COUNT} agents + ${COMMAND_COUNT} c
|
|
|
701
730
|
}
|
|
702
731
|
|
|
703
732
|
console.log(`\n${colors.bright}${colors.green}Done!${colors.reset}`);
|
|
733
|
+
|
|
734
|
+
const closingNote = formatBackupClosingNote(installationEngine.backupLog);
|
|
735
|
+
if (closingNote) {
|
|
736
|
+
console.log(closingNote);
|
|
737
|
+
}
|
|
704
738
|
}
|
|
705
739
|
|
|
706
740
|
/**
|
|
@@ -765,4 +799,5 @@ if (require.main === module) {
|
|
|
765
799
|
installer.run().catch(console.error);
|
|
766
800
|
}
|
|
767
801
|
|
|
768
|
-
module.exports = InteractiveInstaller;
|
|
802
|
+
module.exports = InteractiveInstaller;
|
|
803
|
+
module.exports.formatBackupClosingNote = formatBackupClosingNote;
|