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
@@ -0,0 +1,58 @@
1
+ # Technical Plan
2
+
3
+ Interview the technical owner until another agent or developer could execute the plan
4
+ without guessing.
5
+
6
+ RULES: `references/conventions.md`. Doc standards: `references/doc-policy.md`.
7
+
8
+ ## Before asking
9
+
10
+ 1. EXPLORE: `functional-analysis.md` + `acceptance-criteria.md` when present (preferred,
11
+ not required — offer discovery only when the functional source is too weak to plan
12
+ safely), task docs, setup map, standards, code, tests, build scripts.
13
+ 2. PREFER existing project patterns over new abstractions. Keep uncertainty visible.
14
+
15
+ ## Interview
16
+
17
+ ASK one technical decision at a time, recommended answer first, early exit always
18
+ present. Cover:
19
+ - ownership boundaries, files/symbols to touch;
20
+ - APIs/contracts, data model, migrations;
21
+ - permissions, feature flags, frontend integration;
22
+ - verification strategy;
23
+ - rollout, risk, sequencing.
24
+
25
+ ## Generation gate
26
+
27
+ SHOW compact recap: approach, touched areas, sequence, verification, risks, open points.
28
+ ASK: generate the document | keep interviewing | explain.
29
+ ON generate → write `{tasksRoot}/{task}/implementation-plan.md` (language `artifactLanguage`):
30
+
31
+ ```markdown
32
+ # {Feature} — Implementation Plan
33
+ ## Approach (decisions + why, existing patterns referenced)
34
+ ## Implementation plan
35
+ ### 1. {task} (files, changes, completion criteria)
36
+ ### 2. …
37
+ ## Verification (commands, tests, what proves each step)
38
+ ## Risks & open points
39
+ ## Change history (date | source | change | reason)
40
+ ```
41
+
42
+ Numbered `### n.` tasks are the execution steps the implement route will follow — keep
43
+ each one bounded and independently verifiable.
44
+
45
+ AFTER: offer implement (`skills/oris-flow/references/implement.md`) | stop.
46
+
47
+ ## Never
48
+
49
+ - Write code, Git, or DevOps — this skill only plans.
50
+ - Invent architecture, field names, or commands — uncertainty goes to open points.
51
+ - Re-ask functional/QA questions already answered by docs or confirmed chat.
52
+ - Write the document before the explicit generation choice, or auto-start implement.
53
+
54
+ ## Done when
55
+
56
+ - [ ] Explored before asking; only implementation questions asked.
57
+ - [ ] Plan tasks bounded with completion criteria.
58
+ - [ ] Document written only after the explicit generation choice.
@@ -0,0 +1,100 @@
1
+ # Oris Setup
2
+
3
+ Make the repo cheap for agents to understand — manifest + maps + AI-readiness + loop
4
+ readiness. ADAPT to what the repo IS; never force one structure. Writes ONLY after the
5
+ user confirms the recap.
6
+
7
+ RULES: `references/conventions.md`. Map format: `references/repo-map.md`.
8
+ IF the repo is empty or brand-new → route to `skills/oris-flow/references/new.md` instead.
9
+
10
+ ## Mode
11
+
12
+ IF `.oris-flow/manifest.json` exists → CHECK freshness first:
13
+ `npx oris-skills flow scan --repository-root <repo> --check` — `fresh: true` → say so
14
+ (a rescan would be a no-op); stale → the `changedFiles` list names the areas worth
15
+ refreshing. THEN ask ONE question with these options:
16
+ - refresh all (keeps `confirmed` values — scan merges, never overwrites them)
17
+ - update one area (`--area <section>`)
18
+ - review stale sections
19
+ - show summary (no writes)
20
+ - recreate from scratch
21
+ - language & profiles → Local Preferences below; touches only `~/.oris/settings.json`
22
+ - clean runtime → preview with `npx oris-skills flow clean-runtime --repository-root <repo> --dry-run`, confirm, run without `--dry-run`
23
+
24
+ ELSE → create from scratch.
25
+
26
+ ## 1. Explore first
27
+
28
+ 1. CONFIRM the target repository root (ask only if multiple roots are plausible).
29
+ 2. SCAN: `npx oris-skills flow scan --repository-root <repo> --json` — deterministic
30
+ baseline: `projectType`, stacks, commands (with confidence), sections, `truncated`
31
+ flag. Scan output = draft evidence, not truth.
32
+ 3. IF `truncated: true` → say so; large monorepos may need per-area subagent scans.
33
+ 4. ADD parallel subagent scans (docs, frontend, backend/data, tests/build, local
34
+ skills/rules) only when the baseline leaves real gaps.
35
+
36
+ ## 2. Present findings, decide one at a time
37
+
38
+ SHOW compactly: detected project type + evidence, stacks, commands, AI-readiness (below).
39
+ Then WALK decisions ONE per turn — short explainer first, recommended answer first:
40
+
41
+ - **Project type** — confirm `projectType` (webapp | api | library | cli | monorepo); it
42
+ drives which map sections matter and how criteria/verify observe behavior.
43
+ - **Tasks root** — where Oris writes task documents. Default `.oris-flow/tasks` (keeps
44
+ the project clean); keep `docs/tasks` only when the team already treats task docs as
45
+ project docs. Record in `setup.tasksRoot`.
46
+ - **Verify commands** — show detected build+test commands; user confirms or corrects →
47
+ mark `confirmed`. They feed implement, verify, and loop VERIFIER; unconfirmed = a guess.
48
+ - **Refresh policy** (manual | monthly | after refactor | after test-layout change) —
49
+ advisory only, never a scheduler.
50
+ - **Version control for `.oris-flow/`** — commit (team default) or gitignore. Task docs
51
+ follow the same choice.
52
+
53
+ ## 3. AI-readiness check
54
+
55
+ COMPARE the repo against the agent-native standards; report gaps, one line each, with a
56
+ fix offer:
57
+
58
+ | Check | Why it matters |
59
+ |-------|----------------|
60
+ | `AGENTS.md` (or `CLAUDE.md`) at root | the cross-tool entry point — one-line purpose + commands; every token loads on every request |
61
+ | `CONTEXT.md` | domain glossary — the names agents must use for the product's concepts |
62
+ | `docs/adr/` | decisions agents must not re-litigate |
63
+ | project skills/rules (`.claude/skills`, `.cursor/rules`) | repeatable workflows as source of truth |
64
+ | confirmed test/build commands | deterministic feedback loop — agents verify instead of guessing |
65
+
66
+ ON explicit confirmation per file → scaffold the missing ones minimal.
67
+
68
+ ## 4. Recap + write
69
+
70
+ 1. RECAP: repo, mode, project type, tasksRoot, files to write, AI-readiness gaps,
71
+ choices. CONFIRM explicitly.
72
+ 2. WRITE `.oris-flow/manifest.json` + `.oris-flow/maps/**` (confirmed facts get
73
+ confidence `confirmed` so refresh preserves them), then apply:
74
+ - `npx oris-skills flow version-control --repository-root <repo> --mode commit|gitignore`
75
+ - `npx oris-skills loop bootstrap --repository-root <repo>` when adapter/hooks are missing.
76
+ 3. OFFER next: discovery | technical plan | loop (`npx oris-skills loop demo` for
77
+ first-timers) | refresh one area | stop.
78
+
79
+ ## Local Preferences
80
+
81
+ 1. READ `~/.oris/settings.json` (defaults in `references/settings.md`).
82
+ 2. ASK what to change: uiLanguage | artifactLanguage | responseStyle (standard |
83
+ caveman — maximum token density in chat) | default test profile | profiles.
84
+ 3. SHOW masked summary (passwords `***`), CONFIRM, write ONLY the settings file.
85
+
86
+ ## Never
87
+
88
+ - Write before the recap is explicitly confirmed.
89
+ - Overwrite `confirmed` values on refresh — the scan merges; missing evidence marks
90
+ stale, never deletes.
91
+ - Overwrite existing agent files: edit the file that exists, never create `AGENTS.md`
92
+ beside `CLAUDE.md`.
93
+ - Copy secrets into `.oris-flow/**`, docs, or loop state.
94
+
95
+ ## Done when
96
+
97
+ - [ ] Mode chosen; scan ran before questions; decisions asked one at a time with explainers.
98
+ - [ ] Project type and tasksRoot recorded; confirmed commands marked `confirmed`.
99
+ - [ ] AI-readiness gaps reported; files scaffolded only on explicit per-file confirmation.
100
+ - [ ] Explicit confirmation before every write; no secrets in repository files.
@@ -0,0 +1,57 @@
1
+ # Verify
2
+
3
+ Check every acceptance criterion against the REAL product once, with evidence. One pass,
4
+ no loop ceremony.
5
+
6
+ RULES: `references/conventions.md`. Doc standards: `references/doc-policy.md`.
7
+
8
+ ## Prepare
9
+
10
+ 1. FIND `{tasksRoot}/{task}/acceptance-criteria.md` ({task} per doc-policy). IF missing →
11
+ offer: define criteria first (`skills/oris-flow/references/criteria.md`) | verify against a
12
+ confirmed chat recap | stop.
13
+ 2. READ setup map + verification conventions (test commands, run scripts, environments)
14
+ before improvising.
15
+ 3. PLAN one check per AC: command, test, API call, or observed behavior.
16
+
17
+ ## Verify (read-only on product code)
18
+
19
+ For EACH `AC-xxx`, in order:
20
+ - EXECUTE the numbered steps against the real product (tests, running app, API, CLI —
21
+ whatever the criterion observes).
22
+ - MARK: `Pass` | `Fail` | `Not verifiable` (say why: missing data, blocked env, needs setup).
23
+ - CAPTURE evidence: command + output excerpt, observed behavior, or pointer to logs.
24
+ Facts, not impressions.
25
+
26
+ ## Report gate
27
+
28
+ SHOW compact results: `AC-xxx → Pass/Fail/Not verifiable — one-line evidence` + totals.
29
+ ASK ONE question: Save report | Fix failures now | Stop.
30
+ ON save → write `{tasksRoot}/{task}/verification-report.md` (language `artifactLanguage`):
31
+
32
+ ```markdown
33
+ # {Feature} — Verification Report
34
+ Date: … | Source: acceptance-criteria.md | Verified by: oris-flow verify route
35
+ ## Results
36
+ | AC | Result | Evidence |
37
+ ## Failures (reproduction + observed vs expected)
38
+ ## Not verifiable (reason + what would unblock)
39
+ ## Change history (date | source | change | reason)
40
+ ```
41
+
42
+ ON fix → enter `skills/oris-flow/references/fix.md` with the failing AC as the bug report.
43
+ LONG iterative fixing with re-verification each pass → recommend
44
+ `skills/oris-flow/references/loop.md` only when one fix-verify pass is clearly not enough.
45
+
46
+ ## Never
47
+
48
+ - Edit product code — failures are recorded and routed, never fixed here.
49
+ - Mark Pass from code reading alone when the criterion describes observable behavior.
50
+ - Skip an AC silently — every criterion gets a result or a reason.
51
+ - Write the report before the gate.
52
+
53
+ ## Done when
54
+
55
+ - [ ] Every AC checked against real behavior or explicitly marked Not verifiable.
56
+ - [ ] Evidence captured per criterion; no Pass without observation.
57
+ - [ ] Report written only after the gate; failures routed, not fixed here.
@@ -13,6 +13,7 @@ IMPROVE MODE = {{IMPROVE_MODE}}:
13
13
  - propose → write the smallest evidence-backed change to proposals/; change nothing else.
14
14
 
15
15
  RULE: one improvement per debrief. No improvement without receipt evidence.
16
+ NEVER weaken verification to make passes green — fix the loop, not the bar.
16
17
 
17
- RETURN compact JSON only:
18
+ RETURN compact JSON only (```json fenced):
18
19
  { "role": "debriefer", "outcome": "keep|tuned|proposed", "insight": "", "changedFiles": [], "proposalPath": "" }
@@ -0,0 +1,22 @@
1
+ # Doctor prompt — edit freely; decides continue / stop each pass
2
+
3
+ You are the doctor of the Oris loop "{{OBJECTIVE_SLUG}}".
4
+ Diagnose from executor + verifier evidence, never from confidence.
5
+
6
+ STOP RULES for this loop:
7
+ {{STOP_RULES}}
8
+
9
+ DECIDE one (canonical, references/loop-contract.md):
10
+ - continue — criteria progressing; run another pass.
11
+ - advance — this phase is done; move to the next declared phase.
12
+ - complete — the loop goal is met with evidence.
13
+ - ask-user — missing authority, scope, or product decision.
14
+ - propose-patch — loop design gap; describe the minimal patch (improve mode decides where it lands).
15
+ - blocked — environment, tooling, scope violation, or no progress ({{iteration}} vs limits).
16
+
17
+ DISTINGUISH: loop design issue | execution choice | environment | changed goal | insufficient evidence.
18
+
19
+ NEVER: edit product files, edit loop.md scope/limits/permissions directly.
20
+
21
+ RETURN compact JSON only (```json fenced):
22
+ { "role": "doctor", "decision": "continue|advance|complete|ask-user|propose-patch|blocked", "classification": "", "diagnosis": "", "evidence": "", "patchSummary": "", "approvalRequired": true }
@@ -1,6 +1,7 @@
1
1
  # Executor prompt — edit freely; the orchestrator sends this file to the executor subagent each pass
2
2
 
3
- You are the executor of the Oris loop "{{OBJECTIVE_SLUG}}".
3
+ ORIS LOOP ACTIVE approved pass of the loop "{{OBJECTIVE_SLUG}}".
4
+ You are its executor.
4
5
 
5
6
  GOAL: {{OBJECTIVE}}
6
7
 
@@ -8,6 +9,11 @@ THIS PASS (runtime values filled by the orchestrator):
8
9
  - Iteration: {{iteration}} | Phase: {{phase}} | Target: {{currentTarget}}
9
10
  - DO exactly one bounded action: {{BOUNDED_ACTION}}
10
11
 
12
+ DISCIPLINE:
13
+ - RE-READ the fresh state of every file you touch before editing it.
14
+ - The action proves bigger than bounded → STOP and return blocked with what you found. Half-done work is worse than none.
15
+ - claim = what changed + the exact command or observation that proves it.
16
+
11
17
  SCOPE:
12
18
  - Allowed paths: {{ALLOWED_PATHS}}
13
19
  - Out of scope: {{OUT_OF_SCOPE}}
@@ -15,5 +21,5 @@ SCOPE:
15
21
 
16
22
  NEVER: commit, push, deploy, expose credentials, edit .oris-flow/runtime/**, self-verify.
17
23
 
18
- RETURN compact JSON only:
24
+ RETURN compact JSON only (```json fenced):
19
25
  { "role": "executor", "state": "claimed|blocked", "summary": "", "changedFiles": [], "claim": "", "evidenceHint": "", "blocker": "" }
@@ -3,6 +3,7 @@
3
3
  ORIS LOOP RUN — pass {{iteration}}/{{maxIterations}}
4
4
  Loop: {{loop}} | Phase: {{phase}} ({{phaseIndex}}/{{phaseCount}}) | Do: {{instruction}}
5
5
  Definition: {{loopPath}} | Context: {{contextPath}} | Prompts: {{promptsDir}}
6
+ Active roles: {{roles}}
6
7
  Models: executor={{executorModel}} verifier={{verifierModel}} doctor={{doctorModel}} debriefer={{debrieferModel}} ("inherit" = current session model)
7
8
  Improve mode: {{improveMode}}
8
9
 
@@ -12,13 +13,15 @@ EACH PASS:
12
13
  1. READ {{contextPath}}; pick exactly ONE bounded next step.
13
14
  2. SPAWN executor subagent with {{promptsDir}}/executor.md (fill runtime values), model {{executorModel}}.
14
15
  3. SPAWN verifier subagent with {{promptsDir}}/verifier.md + the executor claim, model {{verifierModel}}.
15
- 4. SPAWN doctor subagent with {{promptsDir}}/doctor.md + both compact summaries, model {{doctorModel}}.
16
+ 4. DECIDE the state:
17
+ - doctor in active roles → SPAWN doctor subagent with {{promptsDir}}/doctor.md + both compact summaries, model {{doctorModel}}; use its decision.
18
+ - no doctor → map the verifier verdict: pass + goalMet → complete; pass → continue; fail → continue; blocked or inconclusive → ask-user.
16
19
  5. WRITE a compact receipt to the loop receipts/ folder; update context.md with durable facts only.
17
- 6. RUN: `oris-skills loop chat --action set-state --state <continue|advance|complete|blocked>`.
18
- 7. END the turn with exactly: `ORIS_LOOP_STATE: continue | advance | complete | blocked | ask_user`.
20
+ 6. RUN: `npx oris-skills loop chat --action set-state --state <continue|advance|complete|blocked|ask-user> --progress <yes|no>` (progress yes = the verifier confirmed forward movement).
21
+ 7. END the turn with exactly: `ORIS_LOOP_STATE: <continue|advance|complete|blocked|ask-user>`.
19
22
 
20
- IMPROVE ({{improveMode}}):
21
- - auto → after the doctor verdict, the debriefer may rewrite files under {{promptsDir}} (archive the old version to history/ first). It must NEVER change scope, limits, permissions, or verification in loop.md — those go to proposals/.
23
+ IMPROVE ({{improveMode}}, only when debriefer is in active roles):
24
+ - auto → after the verdict, the debriefer may rewrite files under {{promptsDir}} (archive the old version to history/ first). It must NEVER change scope, limits, permissions, or verification in loop.md — those go to proposals/.
22
25
  - propose → the debriefer writes proposals/ only; nothing changes until the user approves.
23
26
 
24
27
  ALWAYS:
@@ -26,8 +29,8 @@ ALWAYS:
26
29
  - Tell the user in one line what this pass will do before spawning workers.
27
30
 
28
31
  NEVER:
29
- - Continue when the doctor says blocked, scope is violated, or the same failure repeats.
32
+ - Continue when the verdict is blocked, scope is violated, or the same failure repeats.
30
33
  - Commit, push, deploy, edit .oris-flow/runtime/**, or touch paths outside the approved scope.
31
34
  - Ask "run next pass?" after continue/advance — end the turn; the hook schedules the next pass.
32
35
 
33
- IF prompts files are missing or subagents cannot be spawned: `set-state --state blocked`, say why, end the turn.
36
+ IF prompt files are missing or subagents cannot be spawned: `set-state --state blocked`, say why, end the turn.
@@ -13,9 +13,12 @@ THIS PASS: iteration {{iteration}}, phase {{phase}}, target {{currentTarget}}.
13
13
  Executor claim: supplied by the orchestrator.
14
14
 
15
15
  RULES:
16
- - Read-only on product files.
16
+ - ORDER: run the checks FIRST, judge after. A claim you could not check = inconclusive, never pass.
17
+ - Read-only on product files. NEVER fix anything — you only observe.
17
18
  - Store raw logs under .oris-flow/runtime/evidence/; return pointers, not dumps.
18
19
  - Report pass, fail, blocked, or inconclusive — with reproducible evidence.
19
20
 
20
- RETURN compact JSON only:
21
- { "role": "verifier", "state": "pass|fail|blocked|inconclusive", "summary": "", "evidence": "", "evidencePath": "", "nextRecommendation": "" }
21
+ RETURN compact JSON only (```json fenced):
22
+ { "role": "verifier", "state": "pass|fail|blocked|inconclusive", "goalMet": false, "summary": "", "evidence": "", "evidencePath": "", "failureSignal": "", "nextRecommendation": "" }
23
+
24
+ goalMet = true ONLY when the LOOP goal (not just this pass) is satisfied per the criteria above.
@@ -1,38 +0,0 @@
1
- # Oris Question Contract
2
-
3
- How every Oris skill asks. Base rules live in `references/conventions.md`; this file adds the standard options and localized labels.
4
-
5
- ## Standard options
6
-
7
- Include in every Oris question, localized to `uiLanguage`:
8
-
9
- | Option | `en` | `it` |
10
- |--------|------|------|
11
- | explanation (always) | `Explain the options` | `Spiega le opzioni` |
12
- | early exit (interviews only) | `Enough questions — proceed` | `Basta domande — procedi` |
13
-
14
- - Explanation → explain briefly, re-ask the same question.
15
- - Early exit → stop asking, go to the matching generation gate. It is NOT approval to write or execute.
16
-
17
- ## Generation gates
18
-
19
- Standard labels:
20
-
21
- | `en` | `it` |
22
- |------|------|
23
- | `Generate the document` | `Genera il documento` |
24
- | `Approve document` | `Approva documento` |
25
- | `Continue the interview` | `Continua l'intervista` |
26
- | `Cancel` | `Annulla` |
27
-
28
- Rules:
29
- 1. NEVER write documents, code, or external changes before the explicit gate choice.
30
- 2. Exception: `oris-flow-criteria` writes the file first, then asks once — confirmed only on `Approve document` / `Generate the document`.
31
- 3. After a document is written: concise summary + contextual next-step menu. NEVER auto-start the next phase.
32
-
33
- ## Interview standard
34
-
35
- Oris is a guided product, not a silent task runner.
36
- 1. READ everything the repo can answer first; ask only real decisions.
37
- 2. ONE focused question per turn until outcome, authority, evidence, and stop rules are clear.
38
- 3. The agent recommends; the user's explicit choice decides the approved scope.
@@ -1,49 +0,0 @@
1
- ---
2
- name: oris-flow-criteria
3
- description: Generate or audit business-readable acceptance criteria with stable IDs, numbered steps, and observable outcomes. Use for acceptance-criteria intent or acceptance-criteria.md work. Ambiguous request - route to /oris-flow.
4
- ---
5
-
6
- # Acceptance Criteria
7
-
8
- Generate verifiable, browser-observable criteria. These later feed loop VERIFIER prompts — precision here pays twice.
9
-
10
- RULES: follow `references/conventions.md`. Doc standards: `references/doc-policy.md`.
11
- NEVER write code, Git, or DevOps here.
12
-
13
- ## Generate privately first
14
-
15
- 1. SOURCES in order of trust: confirmed chat > task docs (`functional-analysis.md` preferred, never required — say once when missing) > current UI > code and tests.
16
- 2. DEDUCE create vs update: existing `acceptance-criteria.md` → update, PRESERVE IDs; never recycle a removed ID for different behavior.
17
- 3. IDs: `AC-001`, `AC-002`, … stable across revisions.
18
- 4. Each scenario: role + starting state, deterministic data, numbered user steps, observable outcome placed under the step that causes it, negative coverage, regressions to keep.
19
- 5. CLASSIFY each: `Verifiable` | `Needs setup/data` | `Blocked by Open QA`.
20
- 6. DISCARD criteria not checkable through observable product behavior. For unbuilt features: only confirmed intended behavior — NEVER invent labels or messages.
21
-
22
- ## Interview (only high-impact gaps)
23
-
24
- ASK one at a time, only what docs/UI/code cannot answer: actor boundaries, required data/state, success message + visible result, blocked/negative cases, async states visible to the user, regressions, ambiguous wording. NEVER ask "anything else?".
25
-
26
- ## Write + gate
27
-
28
- WRITE `docs/tasks/{task}/acceptance-criteria.md` (language `artifactLanguage`):
29
-
30
- ```markdown
31
- # {Feature} — Acceptance Criteria
32
- ## AC-001 {scenario title} [Verifiable | Needs setup/data | Blocked by Open QA]
33
- Role/state: … | Data: …
34
- Steps:
35
- 1. …
36
- → observable outcome
37
- Negative: … | Regressions: …
38
- ## Open QA
39
- ## Change history (date | source | change | reason)
40
- ```
41
-
42
- THEN ask ONE question: Approve document | Regenerate | Edit specific criteria | Cancel.
43
- Document is confirmed ONLY on approval. AFTER: offer technical plan | verification loop | stop.
44
-
45
- ## Done when
46
-
47
- - [ ] IDs stable; every scenario observable and classified.
48
- - [ ] Questions only for gaps evidence could not close.
49
- - [ ] Approval asked exactly once after writing.
@@ -1,58 +0,0 @@
1
- ---
2
- name: oris-flow-discover
3
- description: Business-first functional discovery interview. Use to clarify what a feature should do, define product behavior, or produce functional-analysis.md. Ambiguous request - route to /oris-flow.
4
- ---
5
-
6
- # Discovery
7
-
8
- Interview the stakeholder until the desired business behavior is clear enough to document. The cornerstone of the flow: everything downstream (criteria, plan, loops) builds on this.
9
-
10
- RULES: follow `references/conventions.md`. Doc standards: `references/doc-policy.md`.
11
- NEVER write code, Git, or DevOps here. WRITE `functional-analysis.md` only after the user explicitly chooses generation.
12
-
13
- ## Before asking
14
-
15
- 1. EXPLORE first: task folder (`docs/tasks/{task}/`), existing `functional-analysis.md` / `acceptance-criteria.md` / `implementation-plan.md`, project docs, setup map, code evidence, DevOps context when available.
16
- 2. DEDUCE create vs update: existing `functional-analysis.md` → update; missing → create. Ask only on contradictory signals.
17
- 3. Technical evidence = private input. TRANSLATE it to business language; never show file paths or code to the stakeholder.
18
-
19
- ## Interview
20
-
21
- ASK one business decision at a time, recommended answer first, early-exit option always present.
22
- BUSINESS ONLY: actors, roles, permissions, goals, current vs desired behavior, visible states, labels, messages, navigation, edge cases, empty/error states, scope in/out/deferred, rollout, priority.
23
- NEVER ask about: files, APIs, services, tables, selectors, branches, tests, frameworks, implementation order.
24
- WALK every branch of the decision tree until intent, boundaries, cases, and open points are explicit or intentionally parked. Do not stop at the first plausible answer.
25
- ESTIMATE complexity in Fibonacci Story Points (1–21) from scope, dependencies, uncertainty, QA impact.
26
-
27
- ## Generation gate
28
-
29
- SHOW compact summary: goal, confirmed behavior, scope in/out, open points, estimate.
30
- ASK: generate the document | keep interviewing | explain.
31
- ON generate → write `docs/tasks/{task}/functional-analysis.md` per the template below (language: `artifactLanguage`).
32
-
33
- ## Document template
34
-
35
- ```markdown
36
- # {Feature} — Functional Analysis
37
- ## Goal (business value, one paragraph)
38
- ## Actors & permissions
39
- ## Behavior (current → desired, user-visible only, numbered flows)
40
- ## States & messages (labels, empty/error/loading states)
41
- ## Edge cases
42
- ## Scope (included | excluded | deferred)
43
- ## Open points
44
- ## Estimate (Story Points + rationale)
45
- ## Change history (date | source | change | reason)
46
- ```
47
-
48
- FACTS only from confirmed sources; open questions go to Open points — NEVER invent behavior.
49
-
50
- ## After writing
51
-
52
- OFFER: acceptance criteria | technical plan | stop. Never auto-start the next phase.
53
-
54
- ## Done when
55
-
56
- - [ ] Explored before asking; questions stayed business-only, one at a time.
57
- - [ ] Document written only after explicit generation choice.
58
- - [ ] No code, Git, or DevOps writes.
@@ -1,31 +0,0 @@
1
- ---
2
- name: oris-flow-docs
3
- description: Update existing task documents after a later functional, QA, or implementation change. Use when documented behavior changed and docs/tasks files must record it.
4
- disable-model-invocation: true
5
- ---
6
-
7
- # Update Task Docs
8
-
9
- Bring `docs/tasks/{task}/` documents in line with a later change, keeping the change traceable.
10
-
11
- RULES: follow `references/conventions.md`. Doc standards: `references/doc-policy.md`.
12
-
13
- ## Workflow
14
-
15
- 1. IDENTIFY the task folder. IF unclear → ask which task; recommend the obvious recent one.
16
- 2. IF the change itself is vague → ask what changed before reading further.
17
- 3. READ the existing docs, COMPARE with the new reality, CLASSIFY the change: functional | criteria | technical.
18
- 4. ASK only unresolved questions, one at a time.
19
- 5. SUMMARIZE proposed updates; CONFIRM before writing.
20
- 6. UPDATE affected documents in place (language `artifactLanguage`):
21
- - rewrite sections to the new behavior — no "changed!" notes scattered in the body;
22
- - add one change-history row per document: date | source | short change | reason;
23
- - keep unresolved risks in open points, never silently drop them;
24
- - preserve acceptance-criteria IDs.
25
- 7. NEVER create a replacement task folder unless the user wants a new feature.
26
- 8. CLOSE with a concise summary. Offer next steps without auto-starting them.
27
-
28
- ## Done when
29
-
30
- - [ ] Every affected document updated in place with a change-history row.
31
- - [ ] Confirmation before writing; nothing else touched.
@@ -1,42 +0,0 @@
1
- ---
2
- name: oris-flow-fix
3
- description: Triage, diagnose, and fix a bug with the smallest safe change. Use for broken behavior, regressions, failed QA checks, or expected-vs-actual mismatches - reporter may be non-technical.
4
- disable-model-invocation: true
5
- ---
6
-
7
- # Fix
8
-
9
- Smallest safe change near the failing behavior. The caller may be non-technical — reconstruct context yourself.
10
-
11
- RULES: follow `references/conventions.md`.
12
- NEVER edit code before root cause, proposed fix, and verification plan are summarized and explicitly confirmed.
13
-
14
- ## Triage
15
-
16
- 1. IF no details given → ask ONE question (localized): "Which bug? Paste the link/ID if you have one, and describe what happens, what you expected, where."
17
- 2. GATHER before asking more: reproduction steps, expected vs actual, task docs (`functional-analysis.md`, `acceptance-criteria.md`, `implementation-plan.md`), tracker context when available, recent commits, relevant code and tests.
18
- 3. ASSUME bug report, not redesign. NEVER broaden scope or change product decisions unless documented behavior is impossible.
19
-
20
- ## Diagnose
21
-
22
- - REPRODUCE or trace the failure path in code before proposing anything.
23
- - FIND root cause, not symptom. Check whether the documented behavior (criteria/analysis) defines "correct".
24
- - SUMMARIZE: root cause → proposed minimal fix → files → verification plan. CONFIRM explicitly.
25
-
26
- ## Fix
27
-
28
- - SURGICAL change near the failure. NO refactors, cleanup, formatting churn, or opportunistic improvements.
29
- - PRESERVE unrelated user changes.
30
- - ADD a regression test when the area has test conventions.
31
-
32
- ## Verify + close
33
-
34
- 1. RUN the reproduction + targeted tests; broaden if the surface is shared.
35
- 2. SUMMARIZE: cause, change, verification, residual risk.
36
- 3. RECOMMEND: `/oris-loop` verification when criteria exist; docs update when documented behavior changed.
37
-
38
- ## Done when
39
-
40
- - [ ] Root cause identified and confirmed before edits.
41
- - [ ] Minimal change; regression verified.
42
- - [ ] No unrelated code touched.
@@ -1,43 +0,0 @@
1
- ---
2
- name: oris-flow-implement
3
- description: Implement a confirmed feature from implementation-plan.md or an explicitly confirmed technical recap. Use for build, code, implement, apply-the-plan intents after planning.
4
- disable-model-invocation: true
5
- ---
6
-
7
- # Implement
8
-
9
- Execute the confirmed plan — nothing more, nothing less.
10
-
11
- RULES: follow `references/conventions.md`.
12
- NEVER edit code before BOTH the source (plan or recap) and the execution mode are confirmed.
13
-
14
- ## Prepare
15
-
16
- 1. FIND `docs/tasks/{task}/implementation-plan.md`. IF missing → reconstruct a technical recap from chat, task docs, and code; SHOW it; CONFIRM before any edit.
17
- 2. READ setup map, project standards, local skills/rules, tests and build conventions for the touched area.
18
- 3. MAP the code, tests, config, and translations the plan touches (parallel subagents when available).
19
-
20
- ## Execution mode (ask before first edit)
21
-
22
- - `Step by step` (recommended) — one numbered `### n.` plan task per step; SUMMARIZE touched files + completion criteria; WAIT for explicit confirmation before the next task.
23
- - `One shot` — all tasks in order, no stops between tasks.
24
-
25
- ## While coding
26
-
27
- - FOLLOW existing project patterns; no new abstractions without need.
28
- - STAY inside the confirmed scope; park discoveries as notes, don't chase them.
29
- - ADD or update focused tests when practical.
30
- - CLEAN as you finish (`references/clean-code-checklist.md`): remove dead code, debug leftovers, and duplication you introduced; match the file's naming and style — no drive-by refactors of untouched code.
31
- - NEVER update DevOps unless explicitly asked.
32
-
33
- ## Verify + close
34
-
35
- 1. RUN targeted verification first; broaden when the touched surface is shared.
36
- 2. SUMMARIZE: touched files, verification results, residual risk.
37
- 3. RECOMMEND next: `/oris-loop` verification loop when acceptance criteria exist; otherwise update docs (`oris-flow-docs`).
38
-
39
- ## Done when
40
-
41
- - [ ] Source and mode confirmed before edits.
42
- - [ ] Only planned scope touched; verification ran.
43
- - [ ] Next step recommended, not auto-started.
@@ -1,51 +0,0 @@
1
- ---
2
- name: oris-flow-plan
3
- description: Technical implementation-plan interview before coding - file mapping, architecture choices, sequencing, verification strategy, implementation-plan.md. Ambiguous request - route to /oris-flow.
4
- ---
5
-
6
- # Technical Plan
7
-
8
- Interview the technical owner until another agent or developer could execute the plan without guessing.
9
-
10
- RULES: follow `references/conventions.md`. Doc standards: `references/doc-policy.md`.
11
- NEVER write code, Git, or DevOps here. WRITE `implementation-plan.md` only after explicit generation choice.
12
-
13
- ## Before asking
14
-
15
- 1. EXPLORE: `functional-analysis.md` + `acceptance-criteria.md` when present (preferred, not required — offer discovery only when the functional source is too weak to plan safely), task docs, setup map, standards, code, tests, build scripts.
16
- 2. NEVER re-ask functional/QA questions already answered by docs or confirmed chat.
17
- 3. PREFER existing project patterns over new abstractions. Keep uncertainty visible — never invent architecture, field names, or commands.
18
-
19
- ## Interview
20
-
21
- ASK one technical decision at a time, recommended answer first, early-exit always present:
22
- ownership boundaries, files/symbols to touch, APIs/contracts, data model, permissions, feature flags, frontend integration, migrations, verification strategy, rollout, risk, sequencing.
23
-
24
- ## Generation gate
25
-
26
- SHOW compact recap: approach, touched areas, sequence, verification, risks, open points.
27
- ASK: generate the document | keep interviewing | explain.
28
- ON generate → write `docs/tasks/{task}/implementation-plan.md` (language `artifactLanguage`):
29
-
30
- ```markdown
31
- # {Feature} — Implementation Plan
32
- ## Approach (decisions + why, existing patterns referenced)
33
- ## Implementation plan
34
- ### 1. {task} (files, changes, completion criteria)
35
- ### 2. …
36
- ## Verification (commands, tests, what proves each step)
37
- ## Risks & open points
38
- ## Change history (date | source | change | reason)
39
- ```
40
-
41
- Numbered `### n.` tasks are the execution steps `oris-flow-implement` will follow — keep each one bounded and independently verifiable.
42
-
43
- ## After writing
44
-
45
- OFFER: implement | verification loop | stop. Never auto-start.
46
-
47
- ## Done when
48
-
49
- - [ ] Explored before asking; only implementation questions asked.
50
- - [ ] Plan tasks bounded with completion criteria.
51
- - [ ] Document written only after explicit generation choice.