ll-skills 2.0.2 → 3.1.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 +52 -0
- package/README.md +42 -20
- package/agents/ll-executor.md +2 -1
- package/agents/ll-verifier.md +1 -0
- package/assets/preamble.md +27 -39
- package/bin/install.js +4 -1
- package/hooks/ll-precompact.js +29 -1
- package/hooks/ll-skills-check-update.js +6 -6
- package/hooks/ll-state.js +30 -2
- package/package.json +3 -2
- package/scripts/evals/README.md +81 -0
- package/scripts/evals/cases/auto-dry-run/assert.sh +35 -0
- package/scripts/evals/cases/auto-dry-run/case.json +8 -0
- package/scripts/evals/cases/auto-dry-run/prompt.txt +1 -0
- package/scripts/evals/cases/auto-empty-repo/assert.sh +25 -0
- package/scripts/evals/cases/auto-empty-repo/case.json +8 -0
- package/scripts/evals/cases/auto-empty-repo/fixture/.gitkeep +0 -0
- package/scripts/evals/cases/auto-empty-repo/prompt.txt +1 -0
- package/scripts/evals/cases/decide-final-round/assert.sh +45 -0
- package/scripts/evals/cases/decide-final-round/case.json +8 -0
- package/scripts/evals/cases/decide-final-round/fixture/README.md +3 -0
- package/scripts/evals/cases/decide-final-round/prompt.txt +1 -0
- package/scripts/evals/cases/executor-block/assert.sh +33 -0
- package/scripts/evals/cases/executor-block/case.json +8 -0
- package/scripts/evals/cases/executor-block/prompt.txt +14 -0
- package/scripts/evals/cases/goal-autonomous/assert.sh +35 -0
- package/scripts/evals/cases/goal-autonomous/case.json +8 -0
- package/scripts/evals/cases/goal-autonomous/fixture/PLAN.md +42 -0
- package/scripts/evals/cases/goal-autonomous/fixture/PROGRESS.md +20 -0
- package/scripts/evals/cases/goal-autonomous/fixture/ROADMAP.md +29 -0
- package/scripts/evals/cases/goal-autonomous/fixture/package.json +8 -0
- package/scripts/evals/cases/goal-autonomous/fixture/src/money.js +6 -0
- package/scripts/evals/cases/goal-autonomous/fixture/test/reconcile.test.js +8 -0
- package/scripts/evals/cases/goal-autonomous/prompt.txt +1 -0
- package/scripts/evals/cases/implement-review-gate/assert.sh +37 -0
- package/scripts/evals/cases/implement-review-gate/case.json +8 -0
- package/scripts/evals/cases/implement-review-gate/prompt.txt +1 -0
- package/scripts/evals/cases/implement-stops-at-next/assert.sh +121 -0
- package/scripts/evals/cases/implement-stops-at-next/case.json +9 -0
- package/scripts/evals/cases/implement-stops-at-next/prompt.txt +1 -0
- package/scripts/evals/cases/preamble-no-ritual/assert.sh +17 -0
- package/scripts/evals/cases/preamble-no-ritual/case.json +8 -0
- package/scripts/evals/cases/preamble-no-ritual/fixture/README.md +3 -0
- package/scripts/evals/cases/preamble-no-ritual/fixture/src/a.ts +3 -0
- package/scripts/evals/cases/preamble-no-ritual/prompt.txt +1 -0
- package/scripts/evals/cases/router-no-skill/assert.sh +33 -0
- package/scripts/evals/cases/router-no-skill/case.json +8 -0
- package/scripts/evals/cases/router-no-skill/fixture/PLAN.md +21 -0
- package/scripts/evals/cases/router-no-skill/fixture/README.md +7 -0
- package/scripts/evals/cases/router-no-skill/fixture/decisions/README.md +3 -0
- package/scripts/evals/cases/router-no-skill/prompt.txt +1 -0
- package/scripts/evals/cases/router-small/assert.sh +21 -0
- package/scripts/evals/cases/router-small/case.json +8 -0
- package/scripts/evals/cases/router-small/fixture/README.md +17 -0
- package/scripts/evals/cases/router-small/prompt.txt +1 -0
- package/scripts/evals/cases/scout-no-plan/assert.sh +41 -0
- package/scripts/evals/cases/scout-no-plan/case.json +8 -0
- package/scripts/evals/cases/scout-no-plan/prompt.txt +8 -0
- package/scripts/evals/cases/verifier-weakened-test/assert.sh +19 -0
- package/scripts/evals/cases/verifier-weakened-test/case.json +8 -0
- package/scripts/evals/cases/verifier-weakened-test/prompt.txt +13 -0
- package/scripts/evals/cases/verifier-weakened-test/setup.sh +19 -0
- package/scripts/evals/fixtures/manual-contract/out.json +29 -0
- package/scripts/evals/fixtures/manual-contract/out.txt +5 -0
- package/scripts/evals/fixtures/manual-contract/with-skill.json +46 -0
- package/scripts/evals/fixtures/router-no-skill/fail.txt +5 -0
- package/scripts/evals/fixtures/router-no-skill/out.json +27 -0
- package/scripts/evals/fixtures/router-no-skill/pass.txt +4 -0
- package/scripts/evals/lib/assert.sh +107 -0
- package/scripts/evals/lib/extract.js +73 -0
- package/scripts/evals/run.sh +369 -0
- package/scripts/fixtures/auto-closed/PLAN.md +5 -0
- package/scripts/fixtures/auto-closed/PROGRESS.md +20 -0
- package/scripts/fixtures/auto-closed/ROADMAP.md +6 -0
- package/scripts/fixtures/auto-closed/docs/DELIVERY.md +3 -0
- package/scripts/fixtures/auto-decisions/decisions/DEC-0001-taken-alone.md +13 -0
- package/scripts/fixtures/auto-decisions/decisions/DEC-0002-owner.md +13 -0
- package/scripts/fixtures/auto-noroadmap/PLAN.md +20 -0
- package/scripts/fixtures/auto-noroadmap/PROGRESS.md +11 -0
- package/scripts/fixtures/auto-verify-next/PLAN.md +5 -0
- package/scripts/fixtures/auto-verify-next/PROGRESS.md +18 -0
- package/scripts/fixtures/auto-verify-next/ROADMAP.md +5 -0
- package/scripts/fixtures/auto-verify-next/phases/01/PLAN.md +6 -0
- package/scripts/fixtures/evals-auto/auto-dry-run/pass.txt +18 -0
- package/scripts/fixtures/evals-auto/auto-empty-repo/pass.txt +2 -0
- package/scripts/fixtures/evals-auto/goal-autonomous/pass.txt +29 -0
- package/scripts/fixtures/lint-bad/folded-description/SKILL.md +13 -0
- package/scripts/fixtures/lint-bad/jargon-in-questions/SKILL.md +36 -0
- package/scripts/fixtures/lint-bad/model-invocation-false/SKILL.md +10 -0
- package/scripts/fixtures/next-bad/skills/ll-bad/SKILL.md +30 -0
- package/scripts/fixtures/next-good/skills/ll-good/SKILL.md +26 -0
- package/scripts/fixtures/project/BACKLOG.md +6 -5
- package/scripts/fixtures/project/PROGRESS.md +4 -0
- package/scripts/lint-contract.cjs +495 -0
- package/scripts/lint-prompts.sh +443 -0
- package/scripts/ll-tools.js +497 -450
- package/scripts/smoke-test.sh +481 -4
- package/skills/ll-auto/SKILL.md +74 -0
- package/skills/ll-auto/references/run.md +75 -0
- package/skills/ll-auto/references/stages.md +66 -0
- package/skills/ll-auto/scripts/ll-auto.js +345 -0
- package/skills/ll-brainstorm/SKILL.md +14 -12
- package/skills/ll-brainstorm/references/decision-policy.md +22 -12
- package/skills/ll-close/SKILL.md +8 -7
- package/skills/ll-close/references/delivery.md +3 -1
- package/skills/ll-decide/SKILL.md +21 -19
- package/skills/ll-decide/references/decision-policy.md +22 -12
- package/skills/ll-decide/references/decision-room.md +5 -3
- package/skills/ll-decide/references/interview.md +29 -13
- package/skills/ll-decide/references/plan-skeleton.md +14 -14
- package/skills/ll-decide/references/premise-gate.md +34 -20
- package/skills/ll-goal/SKILL.md +22 -4
- package/skills/ll-goal/references/goal-template.md +57 -0
- package/skills/ll-implement/SKILL.md +25 -22
- package/skills/ll-implement/references/briefs.md +2 -1
- package/skills/ll-implement/references/decision-policy.md +22 -12
- package/skills/ll-implement/references/phase-conversation.md +20 -12
- package/skills/ll-implement/references/phase-plan.md +23 -0
- package/skills/ll-oncall/SKILL.md +3 -2
- package/skills/ll-refine/SKILL.md +3 -2
- package/skills/ll-research/SKILL.md +3 -2
- package/skills/ll-resume/SKILL.md +9 -4
- package/skills/ll-update/SKILL.md +6 -1
- package/skills/ll-verify/SKILL.md +2 -1
- package/skills/ll-verify/references/verifier-briefs.md +3 -0
|
@@ -34,6 +34,10 @@ inside one plan only, so a milestone of another phase has no collision check her
|
|
|
34
34
|
`sonnet/medium` for a mechanical one; PLAN §7 overrides.
|
|
35
35
|
- `verification: external` when presence plus wiring cannot prove the criterion (provider
|
|
36
36
|
callback, email, deploy): the verifier then requires a test exercising the transition.
|
|
37
|
+
- A committed acceptance script under `phases/NN/` derives the repository root with `git rev-parse
|
|
38
|
+
--show-toplevel`, binds its own port and, when it stops a process, kills only the PID it started.
|
|
39
|
+
A hardcoded `/home/…` path, a literal `REPO=/abs/...`, `pkill` or `killall` in a committed script
|
|
40
|
+
is a plan defect, not a style note — a verifier disconfirmation about it is a BLOCK.
|
|
37
41
|
|
|
38
42
|
## TDD by milestone type
|
|
39
43
|
|
|
@@ -109,3 +113,22 @@ not in PLAN §1; skipped without a project PLAN.md). Warnings: `block-too-long`
|
|
|
109
113
|
`files-too-many` (>5), `acceptance-not-command` (no npm/node/pytest/make/… prefix), `model-format`
|
|
110
114
|
(`opus/high`), `truths-missing`, `body-section-missing` (block id without a `### M<n>` body). Then
|
|
111
115
|
`waves --json` reports `file_overlap`, `exclusive_conflict`, `unknown_depends_on`, `cycle` (→ `unscheduled`).
|
|
116
|
+
|
|
117
|
+
## Helper contract
|
|
118
|
+
|
|
119
|
+
One row per `ll-tools.js` command this skill calls, with its output fields — read here, the
|
|
120
|
+
helper itself is called, never read.
|
|
121
|
+
|
|
122
|
+
| Command | Output fields |
|
|
123
|
+
|---|---|
|
|
124
|
+
| `ll-tools.js state` | `phase`, `milestones.{total,passed,list}`, `last_commit`, `waiting`, `epilogue_present`, `active_phase_plan` |
|
|
125
|
+
| `ll-tools.js plan-lint phases/NN/PLAN.md` | `verdict` (pass\|warn\|fail), `defects[]`, `summary.{error,warn}`, `skipped[]` |
|
|
126
|
+
| `ll-tools.js waves phases/NN/PLAN.md --json` | `waves[].{wave,milestones,builds,blocked}`, `defects[]`, `blocked_by`, `unscheduled` |
|
|
127
|
+
| `ll-tools.js board-switch NN --milestones <ids>` | `phase`, seeded `M<n>: {passes:false}` lines; idempotent when the phase already matches |
|
|
128
|
+
| `ll-tools.js dec-reserve <n>` | `ids[]`, `files[]`, `prefix`, `width` |
|
|
129
|
+
| `ll-tools.js spot-check <M> --files <list>` | `verdict` (pass\|fail), `files.{expected,found,missing}`, `commits.{count,shas}` |
|
|
130
|
+
| `ll-tools.js tdd-gate <M> --since <sha>` | `tdd` (pass\|fail), `test`, `feat`, `reason` |
|
|
131
|
+
| `ll-tools.js passes <M> true\|false --phase NN [--commit <sha7> \| --reason <text> --state <…>]` | `passes`, `milestone`, `line`, `created`, `board.{passed,total}` |
|
|
132
|
+
| `ll-tools.js heartbeat "<text>"` | `file`, `line`, `text` |
|
|
133
|
+
| `ll-tools.js backlog-reconcile [--run]` | `items[].{id,state,condition,ran,exit,result}`, `closed[]`, `open` |
|
|
134
|
+
| `ll-tools.js epilogue NN --json` | `phase`, `passed[]`, `left[].{id,why}`, `waiting`, `new_backlog[]`, `dirty`, `head`, `blocked_by`, `next_command` |
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: ll-oncall
|
|
3
|
-
description: Runs a session that holds a role instead of a task
|
|
3
|
+
description: Runs a session that holds a role instead of a task, writing the Federation contract into the project CLAUDE.md and keeping a numbered request log; watch builds a vigil brief, ops runs a deploy pre-flight.
|
|
4
4
|
argument-hint: "[role <name> | watch [<slug>] | ops]"
|
|
5
|
+
disable-model-invocation: true
|
|
5
6
|
---
|
|
6
7
|
|
|
7
8
|
# On call
|
|
@@ -113,7 +114,7 @@ delivery answered in 4 fields to the peer and to the owner; `docs/REQUESTS.md` c
|
|
|
113
114
|
entries with their responses; a `watch` with brief, baseline and probe committed; an `ops` with its
|
|
114
115
|
pre-flight output pasted.
|
|
115
116
|
|
|
116
|
-
`▶ Next — /clear then ll-resume
|
|
117
|
+
`▶ Next — /clear, then ll-resume (in a new session of the same role, or the command the round names)`
|
|
117
118
|
|
|
118
119
|
## References
|
|
119
120
|
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: ll-refine
|
|
3
|
-
description: Runs one refinement round on a product
|
|
3
|
+
description: Runs one refinement round on a product already in production, from a review and an impact-ordered decision battery to sliced work with a per-coder file allowlist and a gate that blocks only new errors.
|
|
4
4
|
argument-hint: "[product | visual] [--round N]"
|
|
5
|
+
disable-model-invocation: true
|
|
5
6
|
---
|
|
6
7
|
|
|
7
8
|
# Refine
|
|
@@ -107,7 +108,7 @@ last output line pasted into the round record; every finding is fixed, deferred
|
|
|
107
108
|
`BACKLOG` with an executable closing condition; `visual` mode has `validation/E<n>/REPORT.md` with every
|
|
108
109
|
element `FIEL`; `PROGRESS.md` has `### Round N — <date>`; `git status --porcelain` is empty.
|
|
109
110
|
|
|
110
|
-
`▶ Next — /clear then ll-verify
|
|
111
|
+
`▶ Next — /clear, then ll-verify (or ll-refine --round N+1, when the round is not the last one)`
|
|
111
112
|
|
|
112
113
|
## References
|
|
113
114
|
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: ll-research
|
|
3
|
-
description: Researches a topic with clean-context fronts and web search, delivering
|
|
3
|
+
description: Researches a topic with clean-context fronts and web search, delivering a SUMMARY.md that separates what to apply from what only the owner can decide, plus the evidence trail and a dated source list.
|
|
4
4
|
argument-hint: <topic> [--market] [--constraints "…"]
|
|
5
|
+
disable-model-invocation: true
|
|
5
6
|
---
|
|
6
7
|
|
|
7
8
|
# Research
|
|
@@ -78,7 +79,7 @@ Report in Portuguese: where the files are, the short answer with numbers, the op
|
|
|
78
79
|
|
|
79
80
|
Done when `SUMMARY.md` carries `## Apply`, `## Discuss`, `## Gates` and `## What the evidence does NOT cover`; every claim under `## Apply` names a source labelled `[VERIFIED]` in `sources.md`; every front has its note under `evidence/`; and every declared constraint appears either as validated or as a dated premise. Anything left out is said out loud, with the reason.
|
|
80
81
|
|
|
81
|
-
▶ Next —
|
|
82
|
+
▶ Next — /clear, then ll-decide project (reading docs/research-<topic>/SUMMARY.md)
|
|
82
83
|
|
|
83
84
|
## References
|
|
84
85
|
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: ll-resume
|
|
3
|
-
description: Reconstructs where a project stands in a fixed reading order and answers with a briefing of at most 20 lines
|
|
3
|
+
description: Reconstructs where a project stands in a fixed reading order and answers with a briefing of at most 20 lines - state, cost, blockers, what waits on the owner and the next command. It writes no file.
|
|
4
4
|
argument-hint: "[--decisions]"
|
|
5
|
+
disable-model-invocation: true
|
|
5
6
|
---
|
|
6
7
|
|
|
7
8
|
# Resume
|
|
@@ -47,13 +48,15 @@ Custo — <days with work · span · commits · agent runs, only where measurabl
|
|
|
47
48
|
Bloqueado — <M<n>> por <cause, with evidence> | nada
|
|
48
49
|
Espera por você — <n> decisões WAITING: <ID> <one line each> | nada
|
|
49
50
|
Não verificado — <stale memory of N days, orphan worktree, phantom goal, absent verification>
|
|
50
|
-
▶ Next — <the command the epilogue names>
|
|
51
|
+
▶ Next — /clear, then <the command the epilogue names>
|
|
51
52
|
```
|
|
52
53
|
|
|
53
54
|
Every claim carries its evidence — sha, `file:line`, or date; a green milestone with no commit
|
|
54
55
|
behind it is an orphan, not a delivery. If there are WAITING decisions, offer them after the
|
|
55
56
|
briefing in one `AskUserQuestion` with at most 4, ordered by what they block, each stating the cost
|
|
56
|
-
of waiting — never before it, never twice in a turn.
|
|
57
|
+
of waiting — never before it, never twice in a turn. When the owner picks an option, append
|
|
58
|
+
`status: DECIDED — "<option>" (owner, <date>, ll-resume)` to that `decisions/DEC-*.md` — one write,
|
|
59
|
+
that file only.
|
|
57
60
|
|
|
58
61
|
## Legacy names
|
|
59
62
|
|
|
@@ -72,4 +75,6 @@ Projects not yet migrated keep the Portuguese names — read them, rename nothin
|
|
|
72
75
|
|
|
73
76
|
## Completion criterion
|
|
74
77
|
|
|
75
|
-
Briefing in ≤20 lines, ≤5 tool calls, 0–1 questions, zero files touched
|
|
78
|
+
Briefing in ≤20 lines, ≤5 tool calls, 0–1 questions, zero files touched (one write to a
|
|
79
|
+
`decisions/DEC-*.md` only when the owner answers a WAITING decision), last line
|
|
80
|
+
`▶ Next — /clear, then <cmd>`.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: ll-update
|
|
3
|
-
description: Updates the installed ll-skills package to the latest published version
|
|
3
|
+
description: Updates the installed ll-skills package to the latest published version, showing the CHANGELOG entries between the two, asking once, running the installer and reporting which skills changed.
|
|
4
4
|
argument-hint: "[--no-preamble]"
|
|
5
5
|
disable-model-invocation: true
|
|
6
6
|
---
|
|
@@ -66,6 +66,11 @@ carries the old skills — new or renamed skills appear after restarting Claude
|
|
|
66
66
|
content of an existing skill is read on its next invocation. If `VERSION` did not change, say
|
|
67
67
|
that instead of declaring success.
|
|
68
68
|
|
|
69
|
+
## Completion criterion
|
|
70
|
+
|
|
71
|
+
The installed `VERSION` equals the published one (or the owner declined the update) and the report above was printed.
|
|
72
|
+
▶ Next — /clear, then ll-resume (the running session keeps the old skill texts until it restarts)
|
|
73
|
+
|
|
69
74
|
## Migration from 1.x
|
|
70
75
|
|
|
71
76
|
The first 2.x install removes the eight Portuguese skills — `ll-orquestrar`, `ll-pesquisar`,
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: ll-verify
|
|
3
|
-
description: Audits a finished phase or delivery in clean context
|
|
3
|
+
description: Audits a finished phase or delivery in clean context, in three layers that never saw the implementation reasoning, and writes VERIFICATION.md with a per-criterion ledger, a verdict and two seals.
|
|
4
4
|
argument-hint: "[phase-number] [--external] [--criterion SC-nn]"
|
|
5
|
+
disable-model-invocation: true
|
|
5
6
|
allowed-tools: Bash(${CLAUDE_SKILL_DIR}/scripts/ll-tools.js *)
|
|
6
7
|
---
|
|
7
8
|
|
|
@@ -43,6 +43,9 @@ long runs decay: nothing here is accepted by declaration.
|
|
|
43
43
|
`ll-tools.js ledger` to mark each ledger line FRESH or STALE.
|
|
44
44
|
5. Only after every state is written, open the `<!-- ll-state -->` board in PROGRESS.md and compare:
|
|
45
45
|
`passes: true` whose command fails in this run is the gravest finding there is: name it.
|
|
46
|
+
6. A committed script under `phases/` or `scripts/` with an absolute home path, `pkill -f` or
|
|
47
|
+
`killall` → `BLOCKS: process` (a disconfirmation about a committed artifact is a BLOCK, not a
|
|
48
|
+
reservation).
|
|
46
49
|
|
|
47
50
|
Install no dependency, start no service beyond the sanity step; what is missing becomes
|
|
48
51
|
NOT_VERIFIABLE with the requirement named.
|