oris-skills 2.0.0 → 2.2.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 (83) hide show
  1. package/.cursor-plugin/plugin.json +2 -11
  2. package/CHANGELOG.md +48 -0
  3. package/README.md +79 -31
  4. package/agents/oris-loop-debriefer.md +1 -0
  5. package/agents/oris-loop-doctor.md +1 -1
  6. package/agents/oris-loop-executor.md +5 -2
  7. package/agents/oris-loop-verifier.md +6 -2
  8. package/docs/architecture.md +9 -7
  9. package/docs/distribution.md +1 -1
  10. package/docs/maintainer-guide.md +5 -5
  11. package/docs/user-guide.md +12 -9
  12. package/package.json +2 -3
  13. package/references/clean-code-checklist.md +20 -107
  14. package/references/conventions.md +43 -3
  15. package/references/doc-policy.md +19 -3
  16. package/references/loop-contract.md +24 -17
  17. package/references/loop.schema.json +13 -0
  18. package/references/repo-map.md +3 -3
  19. package/references/repo-map.schema.json +41 -0
  20. package/references/settings.md +2 -1
  21. package/references/settings.schema.json +5 -0
  22. package/scripts/flow/oris-flow-layout.mjs +1 -0
  23. package/scripts/flow/oris-flow-scan.mjs +265 -27
  24. package/scripts/install/generate-agent-adapters.mjs +19 -2
  25. package/scripts/install/install-user-skills.mjs +61 -3
  26. package/scripts/install/uninstall-user-skills.mjs +17 -1
  27. package/scripts/loop/oris-loop-bootstrap.mjs +7 -2
  28. package/scripts/loop/oris-loop-chat.mjs +34 -16
  29. package/scripts/loop/oris-loop-demo.mjs +11 -20
  30. package/scripts/loop/oris-loop-document.mjs +24 -7
  31. package/scripts/loop/oris-loop-dry-run.mjs +8 -4
  32. package/scripts/loop/oris-loop-fixtures.mjs +13 -12
  33. package/scripts/loop/oris-loop-run.mjs +80 -20
  34. package/scripts/loop/oris-loop-stop.mjs +48 -9
  35. package/scripts/loop/oris-loop-templates.mjs +13 -10
  36. package/scripts/loop/oris-loop-verify.mjs +1 -2
  37. package/scripts/oris-skills.mjs +3 -2
  38. package/scripts/tests/run-all-tests.mjs +1 -2
  39. package/scripts/tests/test-oris-flow-scan.mjs +109 -1
  40. package/scripts/tests/test-oris-loop-document.mjs +39 -3
  41. package/scripts/tests/test-oris-loop-run.mjs +28 -2
  42. package/scripts/tests/test-oris-loop-smoke.mjs +36 -3
  43. package/scripts/tests/test-oris-loop-stop.mjs +65 -4
  44. package/scripts/tests/test-routing-lifecycle.mjs +38 -23
  45. package/scripts/tests/test-skill-style.mjs +64 -0
  46. package/skills/oris-flow/SKILL.md +53 -25
  47. package/skills/oris-flow/references/architecture.md +77 -0
  48. package/skills/oris-flow/references/change.md +60 -0
  49. package/skills/oris-flow/references/criteria.md +60 -0
  50. package/skills/oris-flow/references/discover.md +66 -0
  51. package/skills/oris-flow/references/docs.md +33 -0
  52. package/skills/oris-flow/references/fix.md +49 -0
  53. package/skills/oris-flow/references/help.md +34 -0
  54. package/skills/oris-flow/references/implement.md +48 -0
  55. package/skills/oris-flow/references/loop-craft.md +59 -0
  56. package/skills/oris-flow/references/loop-improve.md +32 -0
  57. package/skills/oris-flow/references/loop-run.md +47 -0
  58. package/skills/oris-flow/references/loop.md +56 -0
  59. package/skills/oris-flow/references/new.md +64 -0
  60. package/skills/oris-flow/references/plan.md +58 -0
  61. package/skills/oris-flow/references/setup.md +100 -0
  62. package/skills/oris-flow/references/verify.md +57 -0
  63. package/skills/{oris-loop → oris-flow}/templates/debriefer.md +2 -1
  64. package/skills/oris-flow/templates/doctor.md +22 -0
  65. package/skills/{oris-loop → oris-flow}/templates/executor.md +8 -2
  66. package/skills/{oris-loop → oris-flow}/templates/orchestrator.md +10 -7
  67. package/skills/{oris-loop → oris-flow}/templates/verifier.md +6 -3
  68. package/references/questions.md +0 -38
  69. package/skills/oris-flow-criteria/SKILL.md +0 -49
  70. package/skills/oris-flow-discover/SKILL.md +0 -58
  71. package/skills/oris-flow-docs/SKILL.md +0 -31
  72. package/skills/oris-flow-fix/SKILL.md +0 -42
  73. package/skills/oris-flow-implement/SKILL.md +0 -43
  74. package/skills/oris-flow-plan/SKILL.md +0 -51
  75. package/skills/oris-flow-setup/SKILL.md +0 -49
  76. package/skills/oris-help/SKILL.md +0 -30
  77. package/skills/oris-help/agents/openai.yaml +0 -4
  78. package/skills/oris-loop/SKILL.md +0 -66
  79. package/skills/oris-loop/agents/openai.yaml +0 -4
  80. package/skills/oris-loop/references/craft.md +0 -48
  81. package/skills/oris-loop/references/improve.md +0 -23
  82. package/skills/oris-loop/references/run.md +0 -30
  83. package/skills/oris-loop/templates/doctor.md +0 -20
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "oris-skills",
3
3
  "description": "Oris Skills: one entry point (/oris-flow), guided discovery-to-implementation flow, and self-tuning verified loops. Cross-model: Cursor, Claude Code, Codex.",
4
- "version": "2.0.0",
4
+ "version": "2.2.0",
5
5
  "author": {
6
6
  "name": "Davide Baldassarre"
7
7
  },
@@ -17,15 +17,6 @@
17
17
  "codex"
18
18
  ],
19
19
  "skills": [
20
- "./skills/oris-flow",
21
- "./skills/oris-flow-setup",
22
- "./skills/oris-flow-discover",
23
- "./skills/oris-flow-criteria",
24
- "./skills/oris-flow-plan",
25
- "./skills/oris-flow-implement",
26
- "./skills/oris-flow-fix",
27
- "./skills/oris-flow-docs",
28
- "./skills/oris-loop",
29
- "./skills/oris-help"
20
+ "./skills/oris-flow"
30
21
  ]
31
22
  }
package/CHANGELOG.md ADDED
@@ -0,0 +1,48 @@
1
+ # Changelog
2
+
3
+ ## 2.2.0 - 2026-07-07
4
+
5
+ - **One skill**: users see only `/oris-flow`. Every former skill (setup, new, discover, criteria, plan, implement, fix, verify, change, architecture, merge, docs, help, loop) is now a route reference inside `skills/oris-flow/references/`; the router reads the intent, picks ONE route, and applies its reference in the same chat. Loop prompt templates moved to `skills/oris-flow/templates/`.
6
+ - **Full skill revision, one skeleton**: essence paragraph, leading-word moves (READ / ASK / WRITE / NEVER), an explicit `## Never` block, and a `## Done when` checklist in every route, plus a silence contract — machinery (map reads, freshness checks, write-back) is never narrated. The router's description carries the whole trigger vocabulary so the model auto-enters the flow from plain chat.
7
+ - **Routing hardened**: new `Precedence` section settles the ambiguous calls explicitly (rethink beats build; change vs discover; fix vs implement; verify once vs loop; new vs setup) — one menu question maximum, then enter.
8
+ - **Loops are four decisions**: the craft interview shrank from nine questions to four (GOAL, PROOF, SCOPE, STOP); roles, limits, models, and improve mode are stated defaults, changed only when the user objects or the work demands it.
9
+ - **SHA-anchored maps + write-back**: the scan records `headSha`; `npx oris-skills flow scan --check` answers "is the map fresh?" in one cheap call (SHA compare + changed-file list, zero reads when fresh). Skills refresh only the touched areas in place and write proved facts back (`confirmed` commands, corrected sections) silently at natural pauses — write-back never blocks or slows the work.
10
+ - **Caveman response style**: `orisFlow.responseStyle: "caveman"` in `~/.oris/settings.json` switches chat to maximum token density (answer first, no warm-up, fragments fine); generated documents, gate labels, receipts, and error reports are never compressed. Set via `/oris-flow` → Setup → language & profiles.
11
+ - **Every agent, honestly**: installer now targets GitHub Copilot too (user prompt file in the VS Code profile — enable `chat.promptFiles` once, then `/oris-flow`), and writes a universal pointer at `~/.oris/oris-flow.md` so ANY file-reading agent can join with one sentence. Support matrix: in-chat loop hooks on Cursor and Claude Code; headless loops via Codex/Claude CLIs; the full flow everywhere.
12
+ - **Leaner core**: the merge-conflict route was removed — agents handle it natively and it never belonged to the flow discipline. Loop economy tightened: default limit is now 10 passes, and the craft guidance states when a loop pays for itself (~3 expected passes; below that, implement or verify directly). Canonical subagents aligned with the hardened templates: executors stop instead of half-doing oversized actions, verifiers run checks before judging, debriefers may never weaken the verification bar.
13
+ - **Style is enforced, not hoped for**: new `scripts/tests/test-skill-style.mjs` checks front-matter naming, trigger-bearing descriptions, Never + Done when blocks, a line budget, and that every routing handle resolves to a real bundle file.
14
+
15
+ - **Harness independence**: task documents default to `.oris-flow/tasks/{task}/` (`setup.tasksRoot` in the manifest) — Oris no longer writes into the project's `docs/`; repos already using `docs/tasks` keep it via a recorded setup choice.
16
+ - **Adaptive setup**: the scan detects `projectType` (webapp/api/library/cli/monorepo), derives build/test commands for .NET, Python, Go, and Rust (marked `inferred` until confirmed), walks breadth-first with a `truncated` flag, and honors `--area` for partial refreshes. Refresh merges instead of overwriting: `confirmed` sections, commands, and decisions survive; missing evidence marks them stale.
17
+ - `oris-flow-setup` rewritten: explore → present findings → decisions one at a time with explainers; AI-readiness check (AGENTS.md, CONTEXT.md, ADRs, project skills, confirmed verify commands) with per-file scaffold offers.
18
+ - New skills: `oris-flow-new` (bootstrap an AI-driven project: sparse commands-first AGENTS.md, CONTEXT.md glossary, ADR-0001, test+lint observed green, flow armed), `oris-flow-architecture` (deepening-opportunity review with visual HTML report in the OS temp dir), `oris-flow-merge` (intent-preserving merge/rebase conflict resolution).
19
+ - **Loops default to 2 roles** (executor + verifier); doctor and debriefer are opt-in via `roles:` in loop.md. Without a doctor, the verifier verdict (`goalMet`) drives the state directly.
20
+ - New flow skills: `oris-flow-verify` (one-shot acceptance-criteria verification with evidence report) and `oris-flow-change` (spec-change delta interview, homogeneous doc updates, `CH-xxx` change log). Implement/fix now route verification to `oris-flow-verify` instead of suggesting a loop.
21
+ - Canonical doctor decision enum (`continue|advance|complete|ask-user|propose-patch|blocked`) unified across agent specs, templates, and the headless runner; `ask-user` now pauses the loop instead of silently killing it.
22
+ - `limits.maxNoProgress` is enforced at runtime (stop hook + headless runner + `set-state --progress yes|no`); previously declared but never checked.
23
+ - Read-only roles (verifier, doctor) run without write access in headless mode.
24
+ - Stop hook: Cursor auto-detection fixed (payloads carrying both `conversation_id` and `session_id`); exhausted limits and corrupt state now surface a user-visible message on Claude Code.
25
+ - Executor gate literal `ORIS LOOP ACTIVE` ships in the executor prompt template; role output is a ```json fenced block (robust extraction in the headless runner).
26
+ - All CLI commands in skills, templates, and docs use `npx oris-skills …` (the CLI is not installed globally).
27
+ - Installer now generates Cursor/Claude/Codex loop-agent adapters into the detected agent homes.
28
+ - `{task}` slug convention defined once in `references/doc-policy.md`; `references/questions.md` merged into `references/conventions.md`; clean-code checklist trimmed to its implement/fix use.
29
+ - Removed dead surface: `repairCycles`, `--node-only`/`test:node`/`npm run validate` duplication, empty `scripts/maintenance/`, unused `.gitattributes` rules.
30
+
31
+ ## 2.0.0 - 2026-07-04
32
+
33
+ - Public npm package (MIT): `npx oris-skills@latest install`, multi-agent installer for Cursor, Claude Code, and Codex; bundle moved to `~/.oris/`.
34
+ - Flattened layout: `skills/`, `references/`, `agents/`; 10 essential skills, single entry point `/oris-flow` with inline routing.
35
+ - Loop document schemaVersion 2: `approved` gate, per-role `models` (`inherit` | adapter alias | model id), `improve.mode: auto|propose`.
36
+ - Role prompts moved to per-loop editable files `prompts/{orchestrator,executor,verifier,doctor,debriefer}.md`; orchestrator prompt no longer hardcoded in the stop hook.
37
+ - Self-tuning loops: in `auto` mode the debriefer rewrites prompt files between passes and archives old versions to `history/`.
38
+ - Cross-model triggers: shared stop hook now speaks Cursor (`followup_message`) and Claude Code (`decision: block`); new headless runner `oris-skills loop run --agent codex|claude` (one CLI process per role).
39
+ - Learnability: `oris-skills loop demo` (sandboxed tutorial loop), `oris-skills loop dry-run` (preview the injected pass message).
40
+ - Skill texts rewritten with leading words (~60% shorter); shared rules centralized in `references/conventions.md`.
41
+ - Removed: org-specific MCP config, DevOps story skills, scaffold/service standards, utility skills, demo showcase, legacy fallbacks.
42
+
43
+ ## 1.0.0 - 2026-06-29
44
+
45
+ - Release Oris Skills 1.0 with Node-based install, validation, packaging, and cross-platform CI.
46
+ - Add Oris Loop 1.0 with project-local `.oris-flow/` storage, schemaVersion 1 loop documents, compact receipts, Doctor proposals, and subagent-first orchestration.
47
+ - Add canonical subagent contracts for executor, verifier, Doctor, and debriefer, plus generated Cursor, Claude, and Codex adapters.
48
+ - Add clean Node CLI entrypoints through `oris-skills install`, `oris-skills validate`, `oris-skills doctor`, and `oris-skills loop`.
package/README.md CHANGED
@@ -1,66 +1,114 @@
1
1
  # Oris Skills
2
2
 
3
- One entry point, a guided software flow, and self-tuning verified loops — for **Cursor**, **Claude Code**, and **Codex**.
3
+ **One command. A disciplined software flow. Loops that verify themselves.**
4
+ For Cursor, Claude Code, Codex, GitHub Copilot — and any agent that can read a file.
4
5
 
5
6
  ```bash
6
7
  npx oris-skills@latest install
7
8
  ```
8
9
 
9
- The installer detects your agents (`~/.cursor`, `~/.claude`, `~/.codex`) or takes `--agents cursor,claude,codex`. Reload your agent, then type **`/oris-flow`** the only command you need to remember.
10
+ Reload your agent, then type **`/oris-flow`**. That is the entire user manual.
10
11
 
11
- ## What you get
12
+ ## The idea
12
13
 
13
- **`/oris-flow`** routes any software-flow request to the right skill in the same chat:
14
+ AI agents are brilliant executors and terrible colleagues: they guess requirements,
15
+ declare victory without evidence, and forget everything between sessions. Oris fixes the
16
+ colleague part with three rules baked into every interaction:
14
17
 
15
- | Route | Purpose |
16
- |-------|---------|
17
- | setup | map the repository into `.oris-flow/` so agents stop re-scanning |
18
- | discover | business-first interview `functional-analysis.md` |
19
- | criteria | verifiable acceptance criteria → `acceptance-criteria.md` |
20
- | plan | technical interview `implementation-plan.md` |
21
- | implement / fix | execute the plan, or the smallest safe bug fix |
22
- | loop | repeat work until verified, with subagents and receipts |
23
- | docs / help | keep task docs aligned; explain Oris |
18
+ 1. **Interview before writing.** Nothing lands in your repo — no document, no code — before
19
+ you explicitly approve it. One question per turn, recommended answer first.
20
+ 2. **Evidence before done.** "It works" means a command ran and its output says so.
21
+ Verification is independent from execution: the agent that writes code never grades
22
+ its own homework.
23
+ 3. **Remember without slowing down.** The repo map is anchored to a commit SHA; one cheap
24
+ check answers "is my knowledge fresh?", and only the changed areas are re-read.
25
+ Bookkeeping is silent you see questions, answers, and results, never the machinery.
26
+
27
+ ## One skill, every route
24
28
 
25
- **Oris loops** run the cycle *observe one bounded action independent verify record → repeat/stop* with four roles (executor, verifier, doctor, debriefer), each driven by **an editable prompt file**:
29
+ `/oris-flow` reads your intent and enters the right route in the same chat no other
30
+ command exists. Say "the login button does nothing" and you are in **fix**; say "the
31
+ client changed their mind about invoicing" and you are in **change**.
32
+
33
+ ```text
34
+ idea ──► discover ──► criteria ──► plan ──► implement ──► verify
35
+ │ ▲ │
36
+ └── change (spec moved) ─────────────┘ fix ◄┘ (red)
37
+ ```
38
+
39
+ | Route | You get |
40
+ |-------|---------|
41
+ | **setup** | the repo mapped into `.oris-flow/` (type, commands, structure) so agents stop re-scanning; AI-readiness check |
42
+ | **new** | a greenfield project born agent-native: sparse `AGENTS.md`, domain glossary, first ADR, red→green test observed |
43
+ | **discover** | business-first interview → `functional-analysis.md` |
44
+ | **criteria** | observable, stable-ID acceptance criteria → `acceptance-criteria.md` |
45
+ | **plan** | technical interview → `implementation-plan.md` with bounded, verifiable steps |
46
+ | **implement / fix** | the plan executed step by step, or the smallest safe bug fix — root cause first |
47
+ | **verify** | every criterion checked against the *real* product, with evidence → `verification-report.md` |
48
+ | **change** | spec delta interviewed, **all** documents updated in one approved pass → `change-log.md` |
49
+ | **loop** | repeat-until-verified work with subagents and receipts (below) |
50
+ | **architecture / docs / help** | deepening review, doc alignment, answers |
51
+
52
+ Every route follows one skeleton — what to do, what **Never** to do, and a **Done when**
53
+ checklist — enforced by the test suite, so the discipline survives refactors.
54
+
55
+ ## Loops: repeat until *proven*
56
+
57
+ A loop is four decisions — **GOAL** (what done looks like), **PROOF** (how a pass proves
58
+ it), **SCOPE** (what it may touch), **STOP** (when to quit) — everything else is a sane
59
+ default. Each pass: *observe → one bounded action → independent verify → receipt →
60
+ repeat or stop.*
26
61
 
27
62
  ```text
28
63
  .oris-flow/loops/{slug}/
29
- loop.md contract: goal, scope, limits, per-role models, improve mode
30
- prompts/ orchestrator.md executor.md verifier.md doctor.md debriefer.md ← edit freely
31
- context.md receipts/ proposals/ history/
64
+ loop.md the approved contract: goal, scope, roles, limits, models
65
+ prompts/ one editable file per role the next pass obeys your edits
66
+ receipts/ one compact evidence record per pass
67
+ context.md proposals/ history/
32
68
  ```
33
69
 
34
- - **Per-role models** — `models:` in `loop.md`: `inherit` (session model), an adapter alias, or a platform model id.
35
- - **Self-tuning** `improve.mode: auto` lets the debriefer rewrite the prompt files between passes (old versions archived in `history/`); scope and limits always require your approval.
36
- - **Cross-platform triggers** — Cursor stop hook, Claude Code Stop hook (same chat continues automatically), or `oris-skills loop run --agent codex|claude` for headless/CI where each role is a separate CLI process.
70
+ - **Two roles by default** — executor acts, verifier checks with evidence. Doctor
71
+ (multi-phase stop logic) and debriefer (learns across passes) are opt-in.
72
+ - **Prompts are yours** — plain markdown files; edit them mid-run and the loop adapts.
73
+ With `improve.mode: auto` the debriefer tunes them itself (old versions archived);
74
+ scope and limits always require your approval.
75
+ - **No false victories** — an exhausted limit, a missing tool, or an unverifiable claim
76
+ is never "success". Progress is counted only when the verifier confirms it.
77
+ - **Cross-platform** — Cursor and Claude Code continue the same chat via stop hooks;
78
+ Codex/CI runs headless: `npx oris-skills loop run --loop <slug> --agent codex|claude`.
79
+ Copilot and every other agent get the full flow via prompt pointers; point any
80
+ file-reading agent at `~/.oris/oris-flow.md` and it is in.
37
81
 
38
- ## Try a loop in 3 minutes
82
+ Try it safely in three minutes — the demo touches only its own sandbox folder:
39
83
 
40
84
  ```bash
41
- oris-skills loop demo # creates a sandboxed tutorial loop
42
- oris-skills loop dry-run --loop oris-demo # preview the exact pass message — runs nothing
43
- oris-skills loop chat --action start --loop oris-demo # then end the chat turn; the hook does the rest
85
+ npx oris-skills loop demo # 1. create the tutorial loop
86
+ npx oris-skills loop dry-run --loop oris-demo # 2. preview the exact pass — runs nothing
87
+ npx oris-skills loop chat --action start --loop oris-demo # 3. arm it, end your turn
44
88
  ```
45
89
 
46
- Stop anytime: `oris-skills loop chat --action stop`. Self-check the runtime: `oris-skills loop verify --temp`.
90
+ Stop anything, anytime: `npx oris-skills loop chat --action stop`.
91
+
92
+ ## Tuning
93
+
94
+ Settings live in `~/.oris/settings.json` (`/oris-flow` → Setup → language & profiles):
95
+ chat and document language (`en`/`it`), test profiles, and `responseStyle: "caveman"` —
96
+ chat shrinks to maximum token density while documents and safety gates stay complete.
47
97
 
48
98
  ## Repository layout
49
99
 
50
100
  | Path | Purpose |
51
101
  |------|---------|
52
- | `skills/` | the 10 Oris skills (`SKILL.md` each) |
53
- | `skills/oris-loop/templates/` | role prompt templates copied into new loops |
54
- | `references/` | shared contracts and JSON schemas |
55
- | `agents/` | canonical subagent definitions (Cursor/Claude/Codex adapters generated) |
102
+ | `skills/oris-flow/` | the one skill: router (`SKILL.md`), route references, loop prompt templates |
103
+ | `references/` | shared contracts (conventions, loop contract, doc policy) and JSON schemas |
104
+ | `agents/` | canonical subagent definitions (platform adapters generated at install) |
56
105
  | `scripts/` | Node CLI, loop runtime, installer, tests |
57
106
  | `docs/` | architecture, user guide, maintainer guide |
58
107
 
59
108
  ## Maintainers
60
109
 
61
110
  ```bash
62
- npm test # cross-platform Node test suite
63
- npm run validate
111
+ npm test # cross-platform Node test suite (includes the skill-style gate)
64
112
  npm run verify:loop # end-to-end stop-hook simulation (cursor + claude)
65
113
  ```
66
114
 
@@ -13,6 +13,7 @@ Rules:
13
13
  3. improve.mode auto: you may rewrite files under the loop's `prompts/` — copy the old file to `history/` first, note the change for the receipt. One improvement per debrief.
14
14
  4. improve.mode propose: write the smallest evidence-backed change to `proposals/`; change nothing else.
15
15
  5. NEVER touch loop.md scope, limits, permissions, or verification — always a proposal.
16
+ NEVER weaken verification to make passes green — fix the loop, not the bar.
16
17
  6. Keep the summary compact.
17
18
 
18
19
  Output:
@@ -22,7 +22,7 @@ Output:
22
22
  ```json
23
23
  {
24
24
  "role": "doctor",
25
- "decision": "continue|complete|block|ask-user|propose-patch",
25
+ "decision": "continue|advance|complete|ask-user|propose-patch|blocked",
26
26
  "diagnosis": "",
27
27
  "evidence": "",
28
28
  "patchSummary": "",
@@ -10,12 +10,15 @@ Rules:
10
10
 
11
11
  1. Verify the task includes `ORIS LOOP ACTIVE`.
12
12
  2. Read only the loop definition, context, and files in declared scope.
13
- 3. Perform exactly one bounded action.
13
+ 3. Perform exactly one bounded action. Re-read the fresh state of every file
14
+ you touch before editing it. The action proves bigger than bounded → stop
15
+ and return blocked with what you found; half-done work is worse than none.
14
16
  4. Preserve unrelated user work.
15
17
  5. Do not commit, push, deploy, write DevOps, send external messages, expose
16
18
  credentials, or edit `.oris-flow/runtime/**`.
17
19
  6. Return a compact result with changed files, claim, risk, and suggested
18
- verifier check.
20
+ verifier check. claim = what changed + the exact command or observation
21
+ that proves it.
19
22
 
20
23
  Output:
21
24
 
@@ -8,10 +8,11 @@ You are the Oris Loop verifier.
8
8
 
9
9
  Rules:
10
10
 
11
- 1. Do not trust the executor claim without evidence.
11
+ 1. Do not trust the executor claim without evidence. Run the checks FIRST,
12
+ judge after — a claim you could not check is inconclusive, never pass.
12
13
  2. Use the verification command, static check, browser evidence, or review rule
13
14
  declared by the loop.
14
- 3. Do not edit product files.
15
+ 3. Do not edit product files — you only observe, never fix.
15
16
  4. Keep raw logs out of the orchestrator response; point to evidence files when
16
17
  available.
17
18
  5. Report pass, fail, blocked, or inconclusive.
@@ -22,6 +23,7 @@ Output:
22
23
  {
23
24
  "role": "verifier",
24
25
  "state": "pass|fail|blocked|inconclusive",
26
+ "goalMet": false,
25
27
  "summary": "",
26
28
  "evidence": "",
27
29
  "evidencePath": "",
@@ -29,3 +31,5 @@ Output:
29
31
  "nextRecommendation": ""
30
32
  }
31
33
  ```
34
+
35
+ `goalMet` is true only when the loop goal itself is satisfied, not just this pass.
@@ -5,11 +5,11 @@ Read this before explaining or changing the project.
5
5
  ## Shape
6
6
 
7
7
  ```text
8
- skills/ 10 skills; oris-flow is the router, oris-loop the loop system
9
- references/ shared contracts (conventions, loop-contract, settings, questions, repo-map, doc-policy) + schemas
10
- agents/ canonical subagent definitions; adapters generated per platform
11
- scripts/ Node CLI (oris-skills.mjs), loop runtime, installer, tests
12
- docs/ this file, user-guide, maintainer-guide, distribution
8
+ skills/oris-flow/ the ONE user-facing skill: SKILL.md routes; references/ hold every route (setup…loop); templates/ hold the loop role prompts
9
+ references/ shared contracts (conventions, loop-contract, settings, repo-map, doc-policy, clean-code-checklist) + JSON schemas
10
+ agents/ canonical subagent definitions; adapters generated per platform
11
+ scripts/ Node CLI (oris-skills.mjs), loop runtime, installer, tests
12
+ docs/ this file, user-guide, maintainer-guide, distribution
13
13
  ```
14
14
 
15
15
  ## Principles
@@ -17,10 +17,12 @@ docs/ this file, user-guide, maintainer-guide, distribution
17
17
  - ONE source of truth per fact: contracts live in `references/`, skills point at them.
18
18
  - Skills use leading words (READ / ASK / NEVER / IF) and stay short; shared rules live in `references/conventions.md`.
19
19
  - Everything repeatable lives in the target project under `.oris-flow/`; the bundle at `~/.oris/oris-skills/` owns scripts and templates.
20
+ - Oris never dirties the project: task documents default to `.oris-flow/tasks/` (`setup.tasksRoot` in the manifest; legacy `docs/tasks` supported).
20
21
  - Loop prompts are per-loop editable files (`prompts/*.md`), never hardcoded in scripts.
21
22
 
22
23
  ## Runtime
23
24
 
24
- - `/oris-flow` routes; destination skills own their gates.
25
+ - `/oris-flow` routes; each route reference owns its gates.
26
+ - The repo map is SHA-anchored: `flow scan --check` compares `headSha` to HEAD; only touched areas are refreshed; write-back is silent and never blocks work.
25
27
  - Loop triggers: Cursor stop hook + Claude Stop hook (shared `scripts/loop/oris-loop-stop.mjs`, `--platform` switch), headless `loop run` for Codex/CI.
26
- - State machine: `.oris-flow/runtime/chat-active.json`, managed only by `oris-skills loop chat`.
28
+ - State machine: `.oris-flow/runtime/chat-active.json`, managed only by `npx oris-skills loop chat`.
@@ -20,7 +20,7 @@ The installer detects Cursor / Claude Code / Codex from `~/.cursor`, `~/.claude`
20
20
  ~/.codex/prompts/<name>.md Codex prompts pointing to the bundled SKILL.md
21
21
  ```
22
22
 
23
- Project assets live only in each repository's `.oris-flow/` (adapter, loops, runtime) plus thin hook wrappers in `.cursor/hooks/` and `.claude/hooks/` written by `oris-skills loop bootstrap`.
23
+ Project assets live only in each repository's `.oris-flow/` (adapter, loops, runtime) plus thin hook wrappers in `.cursor/hooks/` and `.claude/hooks/` written by `npx oris-skills loop bootstrap`.
24
24
 
25
25
  ## Uninstall / reinstall
26
26
 
@@ -6,12 +6,13 @@ Use when improving Oris Skills itself. Keep changes tiny; update the canonical f
6
6
 
7
7
  | Change | Canonical place |
8
8
  |--------|-----------------|
9
- | User-facing explanation | `docs/user-guide.md`, `skills/oris-help/SKILL.md` |
9
+ | User-facing explanation | `docs/user-guide.md`, `skills/oris-flow/references/help.md` |
10
10
  | Project structure | `docs/architecture.md` |
11
11
  | Routing | `skills/oris-flow/SKILL.md` (route table) |
12
- | Shared interaction rules | `references/conventions.md`, `references/questions.md` |
13
- | Loop behavior | `references/loop-contract.md`, `skills/oris-loop/` |
14
- | Loop prompt templates | `skills/oris-loop/templates/` |
12
+ | Shared interaction rules | `references/conventions.md` |
13
+ | Task doc standards | `references/doc-policy.md` ({task} slug, per-doc ownership) |
14
+ | Loop behavior | `references/loop-contract.md`, `skills/oris-flow/references/loop*.md` |
15
+ | Loop prompt templates | `skills/oris-flow/templates/` |
15
16
  | Loop runtime | `scripts/loop/` |
16
17
  | Install lifecycle | `scripts/oris-skills.mjs`, `scripts/install/` |
17
18
  | Tests | `scripts/tests/` |
@@ -20,7 +21,6 @@ Use when improving Oris Skills itself. Keep changes tiny; update the canonical f
20
21
 
21
22
  ```bash
22
23
  npm test
23
- npm run validate
24
24
  npm run verify:loop
25
25
  ```
26
26
 
@@ -3,29 +3,32 @@
3
3
  Install once, remember one command:
4
4
 
5
5
  ```bash
6
- npx oris-skills@latest install # detects Cursor / Claude Code / Codex
6
+ npx oris-skills@latest install # detects Cursor / Claude Code / Codex / Copilot (VS Code)
7
7
  ```
8
8
 
9
- Then type **`/oris-flow`** in your agent chat. It routes your request or shows a short menu (setup, discovery, criteria, plan, implement/fix, loop, docs, help). On Codex use the installed `/oris-flow` prompt.
9
+ Then type **`/oris-flow`** in your agent chat. It routes your request or shows a short menu (setup, new project, discovery, criteria, plan, implement/fix, verify, spec change, loop, architecture review, docs, help). On Codex use the installed `/oris-flow` prompt; on Copilot Chat use `/oris-flow` too (enable the VS Code setting `chat.promptFiles` once). Any other agent: tell it to read `~/.oris/oris-flow.md`.
10
+
11
+ The flow in one line: **discover → criteria → plan → implement → verify**, with `fix` for bugs, `change` when the spec changes mid-flight (it updates all task docs together and logs `CH-xxx` history), and `loop` for work that must repeat until verified. `new` bootstraps an AI-driven project from scratch; `architecture` maps deepening/refactor opportunities. Task documents live in `.oris-flow/tasks/` by default — your project's own docs stay untouched.
10
12
 
11
13
  ## Loops in short
12
14
 
13
15
  A loop repeats: one bounded action → independent verification → receipt → continue or stop.
16
+ Building one takes four decisions — goal, proof, scope, stop — everything else defaults.
14
17
 
15
18
  Learn it safely:
16
19
 
17
20
  ```bash
18
- oris-skills loop demo # sandboxed tutorial loop
19
- oris-skills loop dry-run --loop oris-demo # preview, nothing runs
20
- oris-skills loop chat --action start --loop oris-demo # arm, then end the chat turn
21
+ npx oris-skills loop demo # sandboxed tutorial loop
22
+ npx oris-skills loop dry-run --loop oris-demo # preview, nothing runs
23
+ npx oris-skills loop chat --action start --loop oris-demo # arm, then end the chat turn
21
24
  ```
22
25
 
23
26
  Control it:
24
27
 
25
28
  ```bash
26
- oris-skills loop list # what exists
27
- oris-skills loop chat --action status
28
- oris-skills loop chat --action stop
29
+ npx oris-skills loop list # what exists
30
+ npx oris-skills loop chat --action status
31
+ npx oris-skills loop chat --action stop
29
32
  ```
30
33
 
31
34
  Tune it: edit the files in `.oris-flow/loops/{slug}/prompts/` — the next pass obeys them. With `improve.mode: auto` in `loop.md`, the loop tunes those prompts itself and archives old versions in `history/`.
@@ -39,4 +42,4 @@ npx oris-skills reinstall
39
42
  ```
40
43
 
41
44
  Uninstall removes only Oris-owned paths (including legacy locations); preview with `--dry-run`.
42
- Settings (language, test profiles): `~/.oris/settings.json`, edited via `/oris-flow` → Setup.
45
+ Settings (language, test profiles, `responseStyle: caveman` for ultra-short chat): `~/.oris/settings.json`, edited via `/oris-flow` → Setup.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "oris-skills",
3
- "version": "2.0.0",
3
+ "version": "2.2.0",
4
4
  "description": "Oris Skills: one entry point (/oris-flow), guided discovery-to-implementation flow, and self-tuning verified loops for Cursor, Claude Code, and Codex.",
5
5
  "license": "MIT",
6
6
  "author": "Davide Baldassarre",
@@ -16,6 +16,7 @@
16
16
  "docs",
17
17
  ".cursor-plugin",
18
18
  "README.md",
19
+ "CHANGELOG.md",
19
20
  "LICENSE"
20
21
  ],
21
22
  "keywords": [
@@ -37,8 +38,6 @@
37
38
  },
38
39
  "scripts": {
39
40
  "test": "node scripts/tests/run-all-tests.mjs",
40
- "test:node": "node scripts/tests/run-all-tests.mjs --node-only",
41
- "validate": "node scripts/oris-skills.mjs validate",
42
41
  "scan": "node scripts/flow/oris-flow-scan.mjs --json",
43
42
  "install:dry-run": "node scripts/install/install-user-skills.mjs --dry-run",
44
43
  "verify:loop": "node scripts/loop/oris-loop-verify.mjs --temp"
@@ -1,107 +1,20 @@
1
- # Clean Code Checklist
2
-
3
- Use this reference during `/oris-flow-clean-code` audits. Investigate before concluding; absence in one file is not proof of dead code.
4
-
5
- ## Analysis Order
6
-
7
- 1. Resolve scope from task folder, recent diff, or user-provided section.
8
- 2. Read project conventions: README, `docs/**`, `.cursor/rules/**`, `.cursor/skills/**`, linter config, and formatting rules.
9
- 3. List scoped files and their relationships: imports, tests, config, translations, DI registration, routing, and feature flags.
10
- 4. Audit category by category below.
11
- 5. Record only findings with file, line, severity, problem, and proposed fix.
12
-
13
- ## In Scope
14
-
15
- ### Dead and unused code
16
-
17
- - Unused imports, variables, parameters, private methods, classes, constants, and files
18
- - Unreachable branches left from earlier attempts
19
- - Commented-out code blocks that are not active documentation
20
- - Feature flags or toggles that no longer gate anything
21
- - Orphan tests for removed behavior
22
-
23
- Verify with cross-file search, DI/container registration, reflection, dynamic imports, string-based dispatch, routing tables, Razor/tag helpers, code generation, and framework conventions before marking dead.
24
-
25
- ### Duplication
26
-
27
- - Copy-pasted logic with only naming changes
28
- - Parallel helpers that should be one function
29
- - Repeated validation, mapping, or query patterns in the same feature area
30
-
31
- Prefer the existing project abstraction level. Do not introduce new shared layers for one-off duplication unless the user approves.
32
-
33
- ### Abandoned attempts
34
-
35
- - Half-finished branches with TODO/FIXME/HACK tied to the current feature
36
- - Alternate implementations left in place after a chosen approach
37
- - Debug logging, temporary guards, or experimental code paths no longer needed
38
- - Stale comments describing behavior that no longer exists
39
-
40
- ### Typos and wording
41
-
42
- - Misspellings in user-visible strings when the task scope includes them
43
- - Wrong identifiers that reduce readability but are not public API contracts
44
- - Misleading names for variables or methods introduced in the current work
45
-
46
- Do not rename public API surface, routes, database fields, or serialized property names unless the user explicitly approves.
47
-
48
- ### Obvious inefficiencies
49
-
50
- - Duplicate queries or remote calls inside loops
51
- - Repeated allocations or parsing in hot paths within the scoped change
52
- - Redundant null checks, casts, or conversions introduced during iteration
53
-
54
- Flag only clear wins with low regression risk. Do not micro-optimize unrelated code.
55
-
56
- ### Style and format
57
-
58
- Apply only when conventions are explicit in project docs or `.cursor/rules`:
59
-
60
- - Naming patterns
61
- - Import/order rules
62
- - Formatter or analyzer expectations
63
- - File layout conventions
64
-
65
- Avoid formatting-only churn outside the scoped files.
66
-
67
- ## Out of Scope
68
-
69
- - Bug fixes or behavior corrections - use `/oris-flow-fix`
70
- - Architectural deepening, module consolidation, or seam redesign
71
- - Large refactors, API redesign, or cross-feature rewrites
72
- - DevOps, commits, branches, pull requests, or documentation updates
73
- - Rewriting tests to change behavior instead of removing obsolete coverage
74
-
75
- ## Evidence Bar
76
-
77
- Before reporting a finding:
78
-
79
- - Search references and call sites in the scoped area and direct dependents
80
- - Check whether tests, config, or registration files still require the symbol
81
- - For dead code candidates, note what search was performed
82
- - For duplication, cite both locations and why consolidation is safe
83
- - For abandoned attempts, tie the finding to the current feature or recent diff when possible
84
-
85
- ## Report Shape
86
-
87
- Keep chat output compact:
88
-
89
- ```text
90
- Blue src/Feature/Foo.cs:42 - unused import `System.Linq`
91
- Yellow src/Feature/Bar.cs:18-31 - duplicated validation with Baz.cs:44-57 - extract local helper
92
- Red src/Feature/Qux.cs:90 - private method appears unused but referenced via reflection in Registry.cs
93
- ```
94
-
95
- ## Post-Fix Recap Shape
96
-
97
- After approved fixes, show a short bulleted recap in settings `uiLanguage`:
98
-
99
- ```text
100
- - Removed unused imports in Foo.cs and Bar.cs - no references remained after cross-file search.
101
- - Deleted commented fallback block in Qux.cs - superseded by current handler.
102
- - Aligned member order in Baz.cs to project rule X.
103
- ```
104
-
105
- ## Last updated
106
-
107
- 2026-06-23
1
+ # Clean Code Checklist
2
+
3
+ Used by `oris-flow-implement` and `oris-flow-fix` while closing work: clean what YOU introduced, in the files you touched. Investigate before concluding; absence in one file is not proof of dead code.
4
+
5
+ ## Check, in the touched scope only
6
+
7
+ - **Dead code you left behind**: unused imports, variables, parameters, helpers; unreachable branches from earlier attempts; commented-out code that is not documentation.
8
+ - **Abandoned attempts**: half-finished alternates, debug logging, temporary guards, TODO/FIXME tied to this change, stale comments describing behavior that no longer exists.
9
+ - **Duplication you introduced**: copy-pasted logic that should be one function at the project's existing abstraction level, no new shared layers without approval.
10
+ - **Naming and wording**: misleading identifiers introduced in this work; misspellings in user-visible strings when in scope. NEVER rename public API surface, routes, DB fields, or serialized names without explicit approval.
11
+ - **Obvious inefficiencies**: duplicate queries/calls in loops, repeated parsing in hot paths — only clear wins with low regression risk.
12
+ - **Style**: match the file's existing conventions (naming, import order, layout). No formatting-only churn outside touched files.
13
+
14
+ ## Evidence bar
15
+
16
+ Before removing anything: search references and call sites (including DI registration, reflection, dynamic imports, routing, code generation, framework conventions). Tests, config, or registration may still require the symbol.
17
+
18
+ ## Never here
19
+
20
+ Bug fixes (→ `skills/oris-flow/references/fix.md`), architectural redesign, cross-feature refactors, DevOps, drive-by cleanup of code you did not touch.