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.
- package/.cursor-plugin/plugin.json +2 -11
- package/CHANGELOG.md +48 -0
- package/README.md +79 -31
- package/agents/oris-loop-debriefer.md +1 -0
- package/agents/oris-loop-doctor.md +1 -1
- package/agents/oris-loop-executor.md +5 -2
- package/agents/oris-loop-verifier.md +6 -2
- package/docs/architecture.md +9 -7
- package/docs/distribution.md +1 -1
- package/docs/maintainer-guide.md +5 -5
- package/docs/user-guide.md +12 -9
- package/package.json +2 -3
- package/references/clean-code-checklist.md +20 -107
- package/references/conventions.md +43 -3
- package/references/doc-policy.md +19 -3
- package/references/loop-contract.md +24 -17
- package/references/loop.schema.json +13 -0
- package/references/repo-map.md +3 -3
- package/references/repo-map.schema.json +41 -0
- package/references/settings.md +2 -1
- package/references/settings.schema.json +5 -0
- package/scripts/flow/oris-flow-layout.mjs +1 -0
- package/scripts/flow/oris-flow-scan.mjs +265 -27
- package/scripts/install/generate-agent-adapters.mjs +19 -2
- package/scripts/install/install-user-skills.mjs +61 -3
- package/scripts/install/uninstall-user-skills.mjs +17 -1
- package/scripts/loop/oris-loop-bootstrap.mjs +7 -2
- package/scripts/loop/oris-loop-chat.mjs +34 -16
- package/scripts/loop/oris-loop-demo.mjs +11 -20
- package/scripts/loop/oris-loop-document.mjs +24 -7
- package/scripts/loop/oris-loop-dry-run.mjs +8 -4
- package/scripts/loop/oris-loop-fixtures.mjs +13 -12
- package/scripts/loop/oris-loop-run.mjs +80 -20
- package/scripts/loop/oris-loop-stop.mjs +48 -9
- package/scripts/loop/oris-loop-templates.mjs +13 -10
- package/scripts/loop/oris-loop-verify.mjs +1 -2
- package/scripts/oris-skills.mjs +3 -2
- package/scripts/tests/run-all-tests.mjs +1 -2
- package/scripts/tests/test-oris-flow-scan.mjs +109 -1
- package/scripts/tests/test-oris-loop-document.mjs +39 -3
- package/scripts/tests/test-oris-loop-run.mjs +28 -2
- package/scripts/tests/test-oris-loop-smoke.mjs +36 -3
- package/scripts/tests/test-oris-loop-stop.mjs +65 -4
- package/scripts/tests/test-routing-lifecycle.mjs +38 -23
- package/scripts/tests/test-skill-style.mjs +64 -0
- package/skills/oris-flow/SKILL.md +53 -25
- package/skills/oris-flow/references/architecture.md +77 -0
- package/skills/oris-flow/references/change.md +60 -0
- package/skills/oris-flow/references/criteria.md +60 -0
- package/skills/oris-flow/references/discover.md +66 -0
- package/skills/oris-flow/references/docs.md +33 -0
- package/skills/oris-flow/references/fix.md +49 -0
- package/skills/oris-flow/references/help.md +34 -0
- package/skills/oris-flow/references/implement.md +48 -0
- package/skills/oris-flow/references/loop-craft.md +59 -0
- package/skills/oris-flow/references/loop-improve.md +32 -0
- package/skills/oris-flow/references/loop-run.md +47 -0
- package/skills/oris-flow/references/loop.md +56 -0
- package/skills/oris-flow/references/new.md +64 -0
- package/skills/oris-flow/references/plan.md +58 -0
- package/skills/oris-flow/references/setup.md +100 -0
- package/skills/oris-flow/references/verify.md +57 -0
- package/skills/{oris-loop → oris-flow}/templates/debriefer.md +2 -1
- package/skills/oris-flow/templates/doctor.md +22 -0
- package/skills/{oris-loop → oris-flow}/templates/executor.md +8 -2
- package/skills/{oris-loop → oris-flow}/templates/orchestrator.md +10 -7
- package/skills/{oris-loop → oris-flow}/templates/verifier.md +6 -3
- package/references/questions.md +0 -38
- package/skills/oris-flow-criteria/SKILL.md +0 -49
- package/skills/oris-flow-discover/SKILL.md +0 -58
- package/skills/oris-flow-docs/SKILL.md +0 -31
- package/skills/oris-flow-fix/SKILL.md +0 -42
- package/skills/oris-flow-implement/SKILL.md +0 -43
- package/skills/oris-flow-plan/SKILL.md +0 -51
- package/skills/oris-flow-setup/SKILL.md +0 -49
- package/skills/oris-help/SKILL.md +0 -30
- package/skills/oris-help/agents/openai.yaml +0 -4
- package/skills/oris-loop/SKILL.md +0 -66
- package/skills/oris-loop/agents/openai.yaml +0 -4
- package/skills/oris-loop/references/craft.md +0 -48
- package/skills/oris-loop/references/improve.md +0 -23
- package/skills/oris-loop/references/run.md +0 -30
- 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.
|
|
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
|
|
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
|
-
|
|
10
|
+
Reload your agent, then type **`/oris-flow`**. That is the entire user manual.
|
|
10
11
|
|
|
11
|
-
##
|
|
12
|
+
## The idea
|
|
12
13
|
|
|
13
|
-
|
|
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
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
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
|
-
|
|
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,
|
|
30
|
-
prompts/
|
|
31
|
-
|
|
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
|
-
- **
|
|
35
|
-
-
|
|
36
|
-
- **
|
|
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
|
-
|
|
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
|
|
42
|
-
oris-skills loop dry-run --loop oris-demo
|
|
43
|
-
oris-skills loop chat --action start --loop oris-demo #
|
|
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`.
|
|
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
|
|
53
|
-
| `
|
|
54
|
-
| `
|
|
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:
|
|
@@ -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.
|
package/docs/architecture.md
CHANGED
|
@@ -5,11 +5,11 @@ Read this before explaining or changing the project.
|
|
|
5
5
|
## Shape
|
|
6
6
|
|
|
7
7
|
```text
|
|
8
|
-
skills/
|
|
9
|
-
references/
|
|
10
|
-
agents/
|
|
11
|
-
scripts/
|
|
12
|
-
docs/
|
|
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;
|
|
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`.
|
package/docs/distribution.md
CHANGED
|
@@ -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
|
|
package/docs/maintainer-guide.md
CHANGED
|
@@ -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
|
|
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
|
|
13
|
-
|
|
|
14
|
-
| Loop
|
|
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
|
|
package/docs/user-guide.md
CHANGED
|
@@ -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.
|
|
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
|
-
|
|
4
|
-
|
|
5
|
-
##
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
-
|
|
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.
|