ll-skills 2.0.2 → 3.0.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.
Files changed (115) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/README.md +42 -20
  3. package/agents/ll-executor.md +1 -0
  4. package/assets/preamble.md +29 -35
  5. package/bin/install.js +4 -1
  6. package/hooks/ll-precompact.js +29 -1
  7. package/hooks/ll-skills-check-update.js +6 -6
  8. package/hooks/ll-state.js +30 -2
  9. package/package.json +3 -2
  10. package/scripts/evals/README.md +57 -0
  11. package/scripts/evals/cases/auto-dry-run/assert.sh +35 -0
  12. package/scripts/evals/cases/auto-dry-run/case.json +8 -0
  13. package/scripts/evals/cases/auto-dry-run/prompt.txt +1 -0
  14. package/scripts/evals/cases/auto-empty-repo/assert.sh +25 -0
  15. package/scripts/evals/cases/auto-empty-repo/case.json +8 -0
  16. package/scripts/evals/cases/auto-empty-repo/fixture/.gitkeep +0 -0
  17. package/scripts/evals/cases/auto-empty-repo/prompt.txt +1 -0
  18. package/scripts/evals/cases/decide-final-round/assert.sh +32 -0
  19. package/scripts/evals/cases/decide-final-round/case.json +8 -0
  20. package/scripts/evals/cases/decide-final-round/fixture/README.md +3 -0
  21. package/scripts/evals/cases/decide-final-round/prompt.txt +1 -0
  22. package/scripts/evals/cases/executor-block/assert.sh +33 -0
  23. package/scripts/evals/cases/executor-block/case.json +8 -0
  24. package/scripts/evals/cases/executor-block/prompt.txt +14 -0
  25. package/scripts/evals/cases/goal-autonomous/assert.sh +35 -0
  26. package/scripts/evals/cases/goal-autonomous/case.json +8 -0
  27. package/scripts/evals/cases/goal-autonomous/fixture/PLAN.md +42 -0
  28. package/scripts/evals/cases/goal-autonomous/fixture/PROGRESS.md +20 -0
  29. package/scripts/evals/cases/goal-autonomous/fixture/ROADMAP.md +29 -0
  30. package/scripts/evals/cases/goal-autonomous/fixture/package.json +8 -0
  31. package/scripts/evals/cases/goal-autonomous/fixture/src/money.js +6 -0
  32. package/scripts/evals/cases/goal-autonomous/fixture/test/reconcile.test.js +8 -0
  33. package/scripts/evals/cases/goal-autonomous/prompt.txt +1 -0
  34. package/scripts/evals/cases/implement-review-gate/assert.sh +35 -0
  35. package/scripts/evals/cases/implement-review-gate/case.json +8 -0
  36. package/scripts/evals/cases/implement-review-gate/prompt.txt +1 -0
  37. package/scripts/evals/cases/implement-stops-at-next/assert.sh +39 -0
  38. package/scripts/evals/cases/implement-stops-at-next/case.json +9 -0
  39. package/scripts/evals/cases/implement-stops-at-next/prompt.txt +1 -0
  40. package/scripts/evals/cases/preamble-no-ritual/assert.sh +17 -0
  41. package/scripts/evals/cases/preamble-no-ritual/case.json +8 -0
  42. package/scripts/evals/cases/preamble-no-ritual/fixture/README.md +3 -0
  43. package/scripts/evals/cases/preamble-no-ritual/fixture/src/a.ts +3 -0
  44. package/scripts/evals/cases/preamble-no-ritual/prompt.txt +1 -0
  45. package/scripts/evals/cases/router-execute/assert.sh +12 -0
  46. package/scripts/evals/cases/router-execute/case.json +8 -0
  47. package/scripts/evals/cases/router-execute/prompt.txt +1 -0
  48. package/scripts/evals/cases/router-research/assert.sh +11 -0
  49. package/scripts/evals/cases/router-research/case.json +8 -0
  50. package/scripts/evals/cases/router-research/fixture/README.md +3 -0
  51. package/scripts/evals/cases/router-research/prompt.txt +1 -0
  52. package/scripts/evals/cases/router-small/assert.sh +21 -0
  53. package/scripts/evals/cases/router-small/case.json +8 -0
  54. package/scripts/evals/cases/router-small/fixture/README.md +17 -0
  55. package/scripts/evals/cases/router-small/prompt.txt +1 -0
  56. package/scripts/evals/cases/scout-no-plan/assert.sh +41 -0
  57. package/scripts/evals/cases/scout-no-plan/case.json +8 -0
  58. package/scripts/evals/cases/scout-no-plan/prompt.txt +8 -0
  59. package/scripts/evals/cases/verifier-weakened-test/assert.sh +19 -0
  60. package/scripts/evals/cases/verifier-weakened-test/case.json +8 -0
  61. package/scripts/evals/cases/verifier-weakened-test/prompt.txt +13 -0
  62. package/scripts/evals/cases/verifier-weakened-test/setup.sh +19 -0
  63. package/scripts/evals/fixtures/manual-contract/out.json +29 -0
  64. package/scripts/evals/fixtures/manual-contract/out.txt +5 -0
  65. package/scripts/evals/fixtures/manual-contract/with-skill.json +46 -0
  66. package/scripts/evals/lib/assert.sh +107 -0
  67. package/scripts/evals/lib/extract.js +73 -0
  68. package/scripts/evals/run.sh +369 -0
  69. package/scripts/fixtures/auto-closed/PLAN.md +5 -0
  70. package/scripts/fixtures/auto-closed/PROGRESS.md +20 -0
  71. package/scripts/fixtures/auto-closed/ROADMAP.md +6 -0
  72. package/scripts/fixtures/auto-closed/docs/DELIVERY.md +3 -0
  73. package/scripts/fixtures/auto-decisions/decisions/DEC-0001-taken-alone.md +13 -0
  74. package/scripts/fixtures/auto-decisions/decisions/DEC-0002-owner.md +13 -0
  75. package/scripts/fixtures/auto-noroadmap/PLAN.md +20 -0
  76. package/scripts/fixtures/auto-noroadmap/PROGRESS.md +11 -0
  77. package/scripts/fixtures/auto-verify-next/PLAN.md +5 -0
  78. package/scripts/fixtures/auto-verify-next/PROGRESS.md +18 -0
  79. package/scripts/fixtures/auto-verify-next/ROADMAP.md +5 -0
  80. package/scripts/fixtures/auto-verify-next/phases/01/PLAN.md +6 -0
  81. package/scripts/fixtures/evals-auto/auto-dry-run/pass.txt +18 -0
  82. package/scripts/fixtures/evals-auto/auto-empty-repo/pass.txt +2 -0
  83. package/scripts/fixtures/evals-auto/goal-autonomous/pass.txt +29 -0
  84. package/scripts/fixtures/lint-bad/folded-description/SKILL.md +13 -0
  85. package/scripts/fixtures/lint-bad/model-invocation-false/SKILL.md +10 -0
  86. package/scripts/fixtures/next-bad/skills/ll-bad/SKILL.md +30 -0
  87. package/scripts/fixtures/next-good/skills/ll-good/SKILL.md +26 -0
  88. package/scripts/fixtures/project/PROGRESS.md +4 -0
  89. package/scripts/lint-contract.cjs +495 -0
  90. package/scripts/lint-prompts.sh +396 -0
  91. package/scripts/ll-tools.js +465 -447
  92. package/scripts/smoke-test.sh +380 -1
  93. package/skills/ll-auto/SKILL.md +74 -0
  94. package/skills/ll-auto/references/run.md +75 -0
  95. package/skills/ll-auto/references/stages.md +66 -0
  96. package/skills/ll-auto/scripts/ll-auto.js +345 -0
  97. package/skills/ll-brainstorm/SKILL.md +5 -4
  98. package/skills/ll-brainstorm/references/decision-policy.md +3 -0
  99. package/skills/ll-close/SKILL.md +5 -5
  100. package/skills/ll-close/references/delivery.md +3 -1
  101. package/skills/ll-decide/SKILL.md +13 -11
  102. package/skills/ll-decide/references/decision-policy.md +3 -0
  103. package/skills/ll-decide/references/interview.md +10 -0
  104. package/skills/ll-decide/references/plan-skeleton.md +14 -14
  105. package/skills/ll-decide/references/premise-gate.md +7 -0
  106. package/skills/ll-goal/SKILL.md +22 -4
  107. package/skills/ll-goal/references/goal-template.md +57 -0
  108. package/skills/ll-implement/SKILL.md +4 -2
  109. package/skills/ll-implement/references/decision-policy.md +3 -0
  110. package/skills/ll-oncall/SKILL.md +3 -2
  111. package/skills/ll-refine/SKILL.md +3 -2
  112. package/skills/ll-research/SKILL.md +3 -2
  113. package/skills/ll-resume/SKILL.md +4 -3
  114. package/skills/ll-update/SKILL.md +6 -1
  115. package/skills/ll-verify/SKILL.md +2 -1
@@ -0,0 +1,13 @@
1
+ # DEC-0001 — retry policy for the provider adapter
2
+
3
+ - Date: 2026-09-10
4
+ - Decided by: the run, under `--auto-decision`
5
+ - status: DECIDED — three retries with exponential backoff [decided by absence — revisable]
6
+
7
+ ## Decision
8
+
9
+ The adapter retries a failed provider call three times with exponential backoff.
10
+
11
+ ## Why
12
+
13
+ The recommended option of the open question; nobody answered before the run reached the stage.
@@ -0,0 +1,13 @@
1
+ # DEC-0002 — the reconciliation window is 24 hours
2
+
3
+ - Date: 2026-09-10
4
+ - Decided by: the owner, in free text
5
+ - status: DECIDED — 24 hours
6
+
7
+ ## Decision
8
+
9
+ The reconciliation job compares a 24-hour window, not a calendar day.
10
+
11
+ ## Why
12
+
13
+ The owner answered the question directly, so no marker is carried here.
@@ -0,0 +1,20 @@
1
+ # PLAN — fixture without ROADMAP
2
+
3
+ Three phases or fewer: the phase table lives inline in §8, there is no ROADMAP.md.
4
+
5
+ ## §7 Execution protocol
6
+
7
+ Session fable/high; contract executor opus/high.
8
+
9
+ ## §8 Phases
10
+
11
+ | phase | name | requirements | state |
12
+ |---|---|---|---|
13
+ | 01 | intake | REQ-a | DONE (docs/history/v1.0) |
14
+ | 02 | reporting | REQ-b | ACTIVE |
15
+
16
+ Current phase: 02.
17
+
18
+ ## §9 Environment
19
+
20
+ `FIXTURE_KEY` (name only, never the value).
@@ -0,0 +1,11 @@
1
+ # PROGRESS — fixture without ROADMAP
2
+
3
+ <!-- ll-state -->
4
+ phase: 02
5
+ milestones:
6
+ M1: { passes: false, reason: "not started" }
7
+ <!-- /ll-state -->
8
+
9
+ ## Phase 02
10
+
11
+ - [2026-09-09T09:00Z] phase 02 opened — reporting
@@ -0,0 +1,5 @@
1
+ # PLAN — fixture whose epilogue asks for the audit
2
+
3
+ ## §8 Phases
4
+
5
+ See ROADMAP.md. Current phase: 01.
@@ -0,0 +1,18 @@
1
+ # PROGRESS — fixture whose epilogue asks for the audit
2
+
3
+ <!-- ll-state -->
4
+ phase: 01
5
+ milestones:
6
+ M1: { passes: true, commit: a1b2c3d, accepted_at: 2026-09-09T10:00:00Z }
7
+ M2: { passes: false, reason: "acceptance red: 1 test fails" }
8
+ <!-- /ll-state -->
9
+
10
+ ## Phase 01
11
+
12
+ - [2026-09-09T09:00Z] phase 01 opened — intake
13
+
14
+ ## Epilogue — phase 01 — 2026-09-09
15
+
16
+ passed: M1 · left: M2 (acceptance red)
17
+ milestones passed 1/2 · questions asked 0 / assumptions 0 / band-1 open 0 · amendments 0 · verification: pending
18
+ ▶ Next — `/clear`, then `ll-verify 01`
@@ -0,0 +1,5 @@
1
+ # ROADMAP — fixture whose epilogue asks for the audit
2
+
3
+ | phase | name | depends_on | requirements | state |
4
+ |---|---|---|---|---|
5
+ | 01 | intake | — | REQ-a | ACTIVE |
@@ -0,0 +1,6 @@
1
+ # PLAN — phase 01
2
+
3
+ ## Milestones
4
+
5
+ M1 — intake · acceptance: `npm test -- intake.test.ts` · tdd: yes
6
+ M2 — reporting · acceptance: `npm test -- report.test.ts` · tdd: yes
@@ -0,0 +1,18 @@
1
+ research todo no docs/research-*/SUMMARY.md
2
+ brainstorm todo no docs/decide/OPENING.md
3
+ decide done PLAN.md + PROGRESS.md ll-state block
4
+ phase-05 done ROADMAP row: DONE (docs/history/v1.0)
5
+ phase-06 done ROADMAP row: DONE (docs/history/v1.0)
6
+ phase-07 half epilogue over a board with M2, M3 not passing
7
+ phase-08 todo ROADMAP row: PLANNED
8
+ verify-05 todo no phases/05/VERIFICATION.md
9
+ verify-06 todo no phases/06/VERIFICATION.md
10
+ verify-07 todo no phases/07/VERIFICATION.md
11
+ verify-08 todo no phases/08/VERIFICATION.md
12
+ close todo no docs/DELIVERY.md
13
+
14
+ 1. phase-07 ll-implement 07 --no-talk
15
+ 2. phase-08 ll-implement 08 --no-talk
16
+ 3. close ll-close --no-talk
17
+
18
+ Dry run: the roteiro above is the plan; nothing was written.
@@ -0,0 +1,2 @@
1
+ Nada encontrado neste repositório: sem pesquisa, OPENING.md nem PLAN.md.
2
+ /ll-auto "<objetivo>" [--research] [--brainstorm]
@@ -0,0 +1,29 @@
1
+ docs/GOAL.md written and committed (mode: autonomous, phase: all). Paste this text into the
2
+ unattended run:
3
+
4
+ /goal Deliver what ROADMAP.md still owes — phases 07 and 08 — to main, tested, per PLAN.md.
5
+
6
+ DONE WHEN: docs/DELIVERY.md exists; PROGRESS.md carries ## Epilogue — phase 08; phases/07 and
7
+ phases/08 VERIFICATION.md say APPROVED or APPROVED_WITH_RESERVATIONS; docs/AUTO.md has every roteiro
8
+ row done or skipped and ## Decisions taken alone filled; `npm test` exit 0; `git status --porcelain`
9
+ empty — each pasted here as its last output line. Or stop after 80 turns, saying what is missing.
10
+
11
+ READ FIRST: PLAN.md (§0, §2, §3, §7), ROADMAP.md phases 07 and 08, docs/AUTO.md when it exists.
12
+
13
+ INVALIDATING: deleting, weakening, skipping or marking as skip any test, acceptance or threshold;
14
+ self-validation instead of a clean-context verifier; a TODO or "phase 2" left in a milestone marked
15
+ done; partial delivery counted as done. Impossibility without an implemented alternative does not
16
+ complete the goal.
17
+
18
+ EXECUTION: skill ll-auto --auto-decision --verify all, started again from this text whenever the
19
+ session stops before DONE WHEN. Models per role from PLAN.md §7.
20
+
21
+ DECISIONS: everything that stays inside the repository is decided, recorded [decided by absence —
22
+ revisable] and listed at the end; money, production data and credentials never proceed alone.
23
+
24
+ STATE: docs/AUTO.md one log line per stage; PROGRESS.md one block per wave.
25
+
26
+ STOP: external block (key, host, rate limit, an answer only the owner has) = record the state in
27
+ PROGRESS.md and STOP without marking done.
28
+
29
+ ▶ Next — `/clear` then paste the text above into the unattended run.
@@ -0,0 +1,13 @@
1
+ ---
2
+ name: ll-fake
3
+ description: >
4
+ Pretends to describe a skill in a folded scalar.
5
+
6
+ The blank line above keeps a newline inside the value, which rule 1 must reject.
7
+ argument-hint: "[none]"
8
+ disable-model-invocation: true
9
+ ---
10
+
11
+ # Folded description
12
+
13
+ Fixture for lint-prompts rule 1: the description is not one line.
@@ -0,0 +1,10 @@
1
+ ---
2
+ name: ll-fake
3
+ description: Pretends to be a manual skill while the frontmatter leaves the model free to invoke it, which rule 1 must reject.
4
+ argument-hint: "[none]"
5
+ disable-model-invocation: false
6
+ ---
7
+
8
+ # Model invocation left open
9
+
10
+ Fixture for lint-prompts rule 1: disable-model-invocation is declared false.
@@ -0,0 +1,30 @@
1
+ ---
2
+ name: ll-bad
3
+ description: Fixture for lint-contract rule 6 — handoff lines that the Next grammar must reject, one break per line.
4
+ argument-hint: "[none]"
5
+ disable-model-invocation: true
6
+ ---
7
+
8
+ # Bad handoffs
9
+
10
+ Each line below breaks the grammar in one way, so rule 6 must print one FAIL for each.
11
+
12
+ Old shape, backticks around /clear and around a skill that does exist:
13
+
14
+ ▶ Next — `/clear` then `ll-bad`
15
+
16
+ Bare command, no `/clear, then` opening:
17
+
18
+ ▶ Next — ll-bad
19
+
20
+ Right grammar, command that names no skill in this tree:
21
+
22
+ ▶ Next — /clear, then ll-nope
23
+
24
+ Right grammar, but the same skill twice outside a parenthetical:
25
+
26
+ ▶ Next — /clear, then ll-bad or ll-bad --resume
27
+
28
+ Same grammar, two different skills to choose between, still outside a parenthetical:
29
+
30
+ ▶ Next — /clear, then ll-bad or ll-nope --resume
@@ -0,0 +1,26 @@
1
+ ---
2
+ name: ll-good
3
+ description: Fixture for lint-contract rule 6 — one line per allowed form of the Next grammar.
4
+ argument-hint: "[none]"
5
+ disable-model-invocation: true
6
+ ---
7
+
8
+ # Good handoffs
9
+
10
+ Plain command:
11
+
12
+ ▶ Next — /clear, then ll-good
13
+
14
+ Arguments, with the alternatives inside one parenthetical:
15
+
16
+ ▶ Next — /clear, then ll-good 3 --wave 2 (or ll-good --resume)
17
+
18
+ The /goal target, followed by text:
19
+
20
+ ▶ Next — /clear, then /goal <text>
21
+
22
+ A placeholder in angle brackets, when the epilogue names the command:
23
+
24
+ ▶ Next — /clear, then <the command the epilogue names>
25
+
26
+ Wrapped in backticks inside prose: the epilogue ends with `▶ Next — /clear, then ll-good --resume` and nothing follows it.
@@ -50,8 +50,12 @@ not_verified: backoff under real network latency
50
50
 
51
51
  - SC-03 load under 10k rows · `ll-verify --criterion SC-03` · born phase 05
52
52
 
53
+ - [2026-01-05T10:00:00Z] owner: pode ir
54
+ - [2026-01-05T11:00:00Z] owner: troca o nome da coluna
55
+
53
56
  ## Epilogue — phase 07 — 2026-09-09
54
57
 
55
58
  passed: M1 · left: M2 (acceptance red), M3 (BLOCKED: DEC-0041) · WAITING: DEC-0041 (cents rounding) ·
56
59
  new backlog: B-014, B-015 · actions that need you: decide DEC-0041 before wave 3
60
+ milestones passed 2/3 · questions asked 3 / assumptions 1 (ASM-1) / band-1 open 0 · amendments 1 · verification: phases/07/VERIFICATION.md APPROVED
57
61
  ▶ Next — `/clear`, then `ll-implement 8`