oris-skills 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.cursor-plugin/plugin.json +31 -0
- package/LICENSE +21 -0
- package/README.md +67 -0
- package/agents/oris-loop-debriefer.md +29 -0
- package/agents/oris-loop-doctor.md +32 -0
- package/agents/oris-loop-executor.md +32 -0
- package/agents/oris-loop-verifier.md +31 -0
- package/docs/architecture.md +26 -0
- package/docs/distribution.md +38 -0
- package/docs/maintainer-guide.md +32 -0
- package/docs/user-guide.md +42 -0
- package/package.json +49 -0
- package/references/clean-code-checklist.md +107 -0
- package/references/conventions.md +39 -0
- package/references/doc-policy.md +24 -0
- package/references/loop-adapter.schema.json +126 -0
- package/references/loop-contract.md +119 -0
- package/references/loop.schema.json +143 -0
- package/references/questions.md +38 -0
- package/references/repo-map.md +53 -0
- package/references/repo-map.schema.json +198 -0
- package/references/settings.md +35 -0
- package/references/settings.schema.json +75 -0
- package/scripts/flow/oris-flow-clean-runtime.mjs +182 -0
- package/scripts/flow/oris-flow-layout.mjs +53 -0
- package/scripts/flow/oris-flow-scan.mjs +350 -0
- package/scripts/flow/oris-flow-version-control.mjs +42 -0
- package/scripts/flow/oris-gitignore.mjs +79 -0
- package/scripts/install/generate-agent-adapters.mjs +74 -0
- package/scripts/install/install-user-skills.mjs +271 -0
- package/scripts/install/uninstall-user-skills.mjs +163 -0
- package/scripts/loop/oris-loop-bootstrap.mjs +383 -0
- package/scripts/loop/oris-loop-bundle.mjs +22 -0
- package/scripts/loop/oris-loop-chat.mjs +408 -0
- package/scripts/loop/oris-loop-demo.mjs +180 -0
- package/scripts/loop/oris-loop-document.mjs +179 -0
- package/scripts/loop/oris-loop-dry-run.mjs +110 -0
- package/scripts/loop/oris-loop-fixtures.mjs +148 -0
- package/scripts/loop/oris-loop-list.mjs +81 -0
- package/scripts/loop/oris-loop-paths.mjs +232 -0
- package/scripts/loop/oris-loop-run.mjs +241 -0
- package/scripts/loop/oris-loop-stop.mjs +319 -0
- package/scripts/loop/oris-loop-templates.mjs +77 -0
- package/scripts/loop/oris-loop-verify.mjs +206 -0
- package/scripts/oris-skills.mjs +116 -0
- package/scripts/package-oris-skills.mjs +53 -0
- package/scripts/tests/run-all-tests.mjs +38 -0
- package/scripts/tests/test-agent-adapters.mjs +19 -0
- package/scripts/tests/test-oris-1-0-cleanliness.mjs +58 -0
- package/scripts/tests/test-oris-flow-clean-runtime.mjs +75 -0
- package/scripts/tests/test-oris-flow-scan.mjs +49 -0
- package/scripts/tests/test-oris-gitignore.mjs +35 -0
- package/scripts/tests/test-oris-loop-bootstrap.mjs +94 -0
- package/scripts/tests/test-oris-loop-document.mjs +112 -0
- package/scripts/tests/test-oris-loop-list.mjs +74 -0
- package/scripts/tests/test-oris-loop-run.mjs +45 -0
- package/scripts/tests/test-oris-loop-smoke.mjs +130 -0
- package/scripts/tests/test-oris-loop-stop.mjs +371 -0
- package/scripts/tests/test-routing-lifecycle.mjs +181 -0
- package/scripts/tests/test-schemas.mjs +55 -0
- package/skills/oris-flow/SKILL.md +55 -0
- package/skills/oris-flow/agents/openai.yaml +4 -0
- package/skills/oris-flow-criteria/SKILL.md +49 -0
- package/skills/oris-flow-discover/SKILL.md +58 -0
- package/skills/oris-flow-docs/SKILL.md +31 -0
- package/skills/oris-flow-fix/SKILL.md +42 -0
- package/skills/oris-flow-implement/SKILL.md +43 -0
- package/skills/oris-flow-plan/SKILL.md +51 -0
- package/skills/oris-flow-setup/SKILL.md +49 -0
- package/skills/oris-help/SKILL.md +30 -0
- package/skills/oris-help/agents/openai.yaml +4 -0
- package/skills/oris-loop/SKILL.md +66 -0
- package/skills/oris-loop/agents/openai.yaml +4 -0
- package/skills/oris-loop/references/craft.md +48 -0
- package/skills/oris-loop/references/improve.md +23 -0
- package/skills/oris-loop/references/run.md +30 -0
- package/skills/oris-loop/templates/debriefer.md +18 -0
- package/skills/oris-loop/templates/doctor.md +20 -0
- package/skills/oris-loop/templates/executor.md +19 -0
- package/skills/oris-loop/templates/orchestrator.md +33 -0
- package/skills/oris-loop/templates/verifier.md +21 -0
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "oris-skills",
|
|
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",
|
|
5
|
+
"author": {
|
|
6
|
+
"name": "Davide Baldassarre"
|
|
7
|
+
},
|
|
8
|
+
"license": "MIT",
|
|
9
|
+
"keywords": [
|
|
10
|
+
"oris",
|
|
11
|
+
"skills",
|
|
12
|
+
"workflow",
|
|
13
|
+
"flow",
|
|
14
|
+
"loop",
|
|
15
|
+
"cursor",
|
|
16
|
+
"claude",
|
|
17
|
+
"codex"
|
|
18
|
+
],
|
|
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"
|
|
30
|
+
]
|
|
31
|
+
}
|
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Davide Baldassarre
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# Oris Skills
|
|
2
|
+
|
|
3
|
+
One entry point, a guided software flow, and self-tuning verified loops — for **Cursor**, **Claude Code**, and **Codex**.
|
|
4
|
+
|
|
5
|
+
```bash
|
|
6
|
+
npx oris-skills@latest install
|
|
7
|
+
```
|
|
8
|
+
|
|
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
|
+
|
|
11
|
+
## What you get
|
|
12
|
+
|
|
13
|
+
**`/oris-flow`** routes any software-flow request to the right skill in the same chat:
|
|
14
|
+
|
|
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 |
|
|
24
|
+
|
|
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**:
|
|
26
|
+
|
|
27
|
+
```text
|
|
28
|
+
.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/
|
|
32
|
+
```
|
|
33
|
+
|
|
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.
|
|
37
|
+
|
|
38
|
+
## Try a loop in 3 minutes
|
|
39
|
+
|
|
40
|
+
```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
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
Stop anytime: `oris-skills loop chat --action stop`. Self-check the runtime: `oris-skills loop verify --temp`.
|
|
47
|
+
|
|
48
|
+
## Repository layout
|
|
49
|
+
|
|
50
|
+
| Path | Purpose |
|
|
51
|
+
|------|---------|
|
|
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) |
|
|
56
|
+
| `scripts/` | Node CLI, loop runtime, installer, tests |
|
|
57
|
+
| `docs/` | architecture, user guide, maintainer guide |
|
|
58
|
+
|
|
59
|
+
## Maintainers
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
npm test # cross-platform Node test suite
|
|
63
|
+
npm run validate
|
|
64
|
+
npm run verify:loop # end-to-end stop-hook simulation (cursor + claude)
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
Node.js 20+. License: MIT.
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: oris-loop-debriefer
|
|
3
|
+
description: Learns across Oris Loop receipts and tunes the loop prompts (improve.mode auto) or proposes changes (propose). Use after passes complete.
|
|
4
|
+
readonly: false
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
You are the Oris Loop debriefer.
|
|
8
|
+
|
|
9
|
+
Rules:
|
|
10
|
+
|
|
11
|
+
1. Use receipts and referenced evidence only; no durable pattern from a single weak signal.
|
|
12
|
+
2. Separate design problems from execution, environment, verifier, and changed-goal problems.
|
|
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
|
+
4. improve.mode propose: write the smallest evidence-backed change to `proposals/`; change nothing else.
|
|
15
|
+
5. NEVER touch loop.md scope, limits, permissions, or verification — always a proposal.
|
|
16
|
+
6. Keep the summary compact.
|
|
17
|
+
|
|
18
|
+
Output:
|
|
19
|
+
|
|
20
|
+
```json
|
|
21
|
+
{
|
|
22
|
+
"role": "debriefer",
|
|
23
|
+
"outcome": "keep|tuned|proposed|execution-issue|environment-blocked|inconclusive",
|
|
24
|
+
"insight": "",
|
|
25
|
+
"changedFiles": [],
|
|
26
|
+
"proposalPath": "",
|
|
27
|
+
"nextAction": ""
|
|
28
|
+
}
|
|
29
|
+
```
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: oris-loop-doctor
|
|
3
|
+
description: Diagnoses Oris Loop run evidence and decides whether to continue, block, ask the user, or propose a minimal loop patch.
|
|
4
|
+
readonly: true
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
You are the Oris Loop Doctor.
|
|
8
|
+
|
|
9
|
+
Rules:
|
|
10
|
+
|
|
11
|
+
1. Diagnose from receipts and verifier evidence, not confidence.
|
|
12
|
+
2. Distinguish loop design issues from execution mistakes, verifier issues,
|
|
13
|
+
environment failures, changed goals, and insufficient evidence.
|
|
14
|
+
3. Do not patch the loop directly.
|
|
15
|
+
4. Propose the smallest loop change only when evidence shows the loop design is
|
|
16
|
+
the problem.
|
|
17
|
+
5. Require approval for changes to scope, authority, commands, paths, stop
|
|
18
|
+
rules, risk, credentials, or external systems.
|
|
19
|
+
|
|
20
|
+
Output:
|
|
21
|
+
|
|
22
|
+
```json
|
|
23
|
+
{
|
|
24
|
+
"role": "doctor",
|
|
25
|
+
"decision": "continue|complete|block|ask-user|propose-patch",
|
|
26
|
+
"diagnosis": "",
|
|
27
|
+
"evidence": "",
|
|
28
|
+
"patchSummary": "",
|
|
29
|
+
"approvalRequired": true,
|
|
30
|
+
"nextAction": ""
|
|
31
|
+
}
|
|
32
|
+
```
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: oris-loop-executor
|
|
3
|
+
description: Performs one bounded action for an approved Oris Loop pass. Use only when the orchestrator provides loop scope, current phase, allowed paths, and verification intent.
|
|
4
|
+
readonly: false
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
You are the Oris Loop executor.
|
|
8
|
+
|
|
9
|
+
Rules:
|
|
10
|
+
|
|
11
|
+
1. Verify the task includes `ORIS LOOP ACTIVE`.
|
|
12
|
+
2. Read only the loop definition, context, and files in declared scope.
|
|
13
|
+
3. Perform exactly one bounded action.
|
|
14
|
+
4. Preserve unrelated user work.
|
|
15
|
+
5. Do not commit, push, deploy, write DevOps, send external messages, expose
|
|
16
|
+
credentials, or edit `.oris-flow/runtime/**`.
|
|
17
|
+
6. Return a compact result with changed files, claim, risk, and suggested
|
|
18
|
+
verifier check.
|
|
19
|
+
|
|
20
|
+
Output:
|
|
21
|
+
|
|
22
|
+
```json
|
|
23
|
+
{
|
|
24
|
+
"role": "executor",
|
|
25
|
+
"state": "claimed|blocked",
|
|
26
|
+
"summary": "",
|
|
27
|
+
"changedFiles": [],
|
|
28
|
+
"claim": "",
|
|
29
|
+
"evidenceHint": "",
|
|
30
|
+
"blocker": ""
|
|
31
|
+
}
|
|
32
|
+
```
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: oris-loop-verifier
|
|
3
|
+
description: Independently verifies an Oris Loop executor claim using declared project evidence. Use after an executor reports a bounded action.
|
|
4
|
+
readonly: true
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
You are the Oris Loop verifier.
|
|
8
|
+
|
|
9
|
+
Rules:
|
|
10
|
+
|
|
11
|
+
1. Do not trust the executor claim without evidence.
|
|
12
|
+
2. Use the verification command, static check, browser evidence, or review rule
|
|
13
|
+
declared by the loop.
|
|
14
|
+
3. Do not edit product files.
|
|
15
|
+
4. Keep raw logs out of the orchestrator response; point to evidence files when
|
|
16
|
+
available.
|
|
17
|
+
5. Report pass, fail, blocked, or inconclusive.
|
|
18
|
+
|
|
19
|
+
Output:
|
|
20
|
+
|
|
21
|
+
```json
|
|
22
|
+
{
|
|
23
|
+
"role": "verifier",
|
|
24
|
+
"state": "pass|fail|blocked|inconclusive",
|
|
25
|
+
"summary": "",
|
|
26
|
+
"evidence": "",
|
|
27
|
+
"evidencePath": "",
|
|
28
|
+
"failureSignal": "",
|
|
29
|
+
"nextRecommendation": ""
|
|
30
|
+
}
|
|
31
|
+
```
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# Oris Skills Architecture
|
|
2
|
+
|
|
3
|
+
Read this before explaining or changing the project.
|
|
4
|
+
|
|
5
|
+
## Shape
|
|
6
|
+
|
|
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
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## Principles
|
|
16
|
+
|
|
17
|
+
- ONE source of truth per fact: contracts live in `references/`, skills point at them.
|
|
18
|
+
- Skills use leading words (READ / ASK / NEVER / IF) and stay short; shared rules live in `references/conventions.md`.
|
|
19
|
+
- Everything repeatable lives in the target project under `.oris-flow/`; the bundle at `~/.oris/oris-skills/` owns scripts and templates.
|
|
20
|
+
- Loop prompts are per-loop editable files (`prompts/*.md`), never hardcoded in scripts.
|
|
21
|
+
|
|
22
|
+
## Runtime
|
|
23
|
+
|
|
24
|
+
- `/oris-flow` routes; destination skills own their gates.
|
|
25
|
+
- 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`.
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# Oris Skills Distribution
|
|
2
|
+
|
|
3
|
+
## Channel
|
|
4
|
+
|
|
5
|
+
Public npm package `oris-skills` (MIT). Users install with:
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npx oris-skills@latest install
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
The installer detects Cursor / Claude Code / Codex from `~/.cursor`, `~/.claude`, `~/.codex`, or takes `--agents`. Node.js 20+.
|
|
12
|
+
|
|
13
|
+
## Installed assets
|
|
14
|
+
|
|
15
|
+
```text
|
|
16
|
+
~/.oris/oris-skills/ bundle: scripts, skills, references, agents, docs
|
|
17
|
+
~/.oris/settings.json user settings (created only if missing)
|
|
18
|
+
~/.cursor/skills/<name>/ Cursor skills (marker-managed)
|
|
19
|
+
~/.claude/skills/<name>/ Claude Code skills (marker-managed)
|
|
20
|
+
~/.codex/prompts/<name>.md Codex prompts pointing to the bundled SKILL.md
|
|
21
|
+
```
|
|
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`.
|
|
24
|
+
|
|
25
|
+
## Uninstall / reinstall
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
npx oris-skills uninstall --dry-run # preview
|
|
29
|
+
npx oris-skills uninstall # removes Oris-owned paths incl. legacy ~/.cursor locations
|
|
30
|
+
npx oris-skills reinstall
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Publish
|
|
34
|
+
|
|
35
|
+
1. Versions aligned in `package.json` + `.cursor-plugin/plugin.json`; CHANGELOG updated.
|
|
36
|
+
2. `npm test` green on CI (Windows/Linux/macOS).
|
|
37
|
+
3. `npm publish` (publishConfig.access = public).
|
|
38
|
+
4. Tag the release.
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# Oris Skills Maintainer Guide
|
|
2
|
+
|
|
3
|
+
Use when improving Oris Skills itself. Keep changes tiny; update the canonical file instead of duplicating an explanation.
|
|
4
|
+
|
|
5
|
+
## Ownership
|
|
6
|
+
|
|
7
|
+
| Change | Canonical place |
|
|
8
|
+
|--------|-----------------|
|
|
9
|
+
| User-facing explanation | `docs/user-guide.md`, `skills/oris-help/SKILL.md` |
|
|
10
|
+
| Project structure | `docs/architecture.md` |
|
|
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/` |
|
|
15
|
+
| Loop runtime | `scripts/loop/` |
|
|
16
|
+
| Install lifecycle | `scripts/oris-skills.mjs`, `scripts/install/` |
|
|
17
|
+
| Tests | `scripts/tests/` |
|
|
18
|
+
|
|
19
|
+
## Validate
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
npm test
|
|
23
|
+
npm run validate
|
|
24
|
+
npm run verify:loop
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## Release
|
|
28
|
+
|
|
29
|
+
1. Bump `package.json` + `.cursor-plugin/plugin.json` versions together.
|
|
30
|
+
2. Update `CHANGELOG.md`.
|
|
31
|
+
3. `npm test` green on CI (Windows/Linux/macOS).
|
|
32
|
+
4. `npm publish` (public, MIT).
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# Oris Skills User Guide
|
|
2
|
+
|
|
3
|
+
Install once, remember one command:
|
|
4
|
+
|
|
5
|
+
```bash
|
|
6
|
+
npx oris-skills@latest install # detects Cursor / Claude Code / Codex
|
|
7
|
+
```
|
|
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.
|
|
10
|
+
|
|
11
|
+
## Loops in short
|
|
12
|
+
|
|
13
|
+
A loop repeats: one bounded action → independent verification → receipt → continue or stop.
|
|
14
|
+
|
|
15
|
+
Learn it safely:
|
|
16
|
+
|
|
17
|
+
```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
|
+
```
|
|
22
|
+
|
|
23
|
+
Control it:
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
oris-skills loop list # what exists
|
|
27
|
+
oris-skills loop chat --action status
|
|
28
|
+
oris-skills loop chat --action stop
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
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/`.
|
|
32
|
+
|
|
33
|
+
## Install lifecycle
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
npx oris-skills install [--agents cursor,claude,codex] [--force]
|
|
37
|
+
npx oris-skills uninstall [--dry-run]
|
|
38
|
+
npx oris-skills reinstall
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
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.
|
package/package.json
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "oris-skills",
|
|
3
|
+
"version": "2.0.0",
|
|
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
|
+
"license": "MIT",
|
|
6
|
+
"author": "Davide Baldassarre",
|
|
7
|
+
"type": "module",
|
|
8
|
+
"bin": {
|
|
9
|
+
"oris-skills": "scripts/oris-skills.mjs"
|
|
10
|
+
},
|
|
11
|
+
"files": [
|
|
12
|
+
"scripts",
|
|
13
|
+
"skills",
|
|
14
|
+
"references",
|
|
15
|
+
"agents",
|
|
16
|
+
"docs",
|
|
17
|
+
".cursor-plugin",
|
|
18
|
+
"README.md",
|
|
19
|
+
"LICENSE"
|
|
20
|
+
],
|
|
21
|
+
"keywords": [
|
|
22
|
+
"oris",
|
|
23
|
+
"skills",
|
|
24
|
+
"agent",
|
|
25
|
+
"workflow",
|
|
26
|
+
"loop",
|
|
27
|
+
"cursor",
|
|
28
|
+
"claude",
|
|
29
|
+
"codex"
|
|
30
|
+
],
|
|
31
|
+
"repository": {
|
|
32
|
+
"type": "git",
|
|
33
|
+
"url": "git+https://github.com/davidebaldassarre/OrisSkills.git"
|
|
34
|
+
},
|
|
35
|
+
"publishConfig": {
|
|
36
|
+
"access": "public"
|
|
37
|
+
},
|
|
38
|
+
"scripts": {
|
|
39
|
+
"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
|
+
"scan": "node scripts/flow/oris-flow-scan.mjs --json",
|
|
43
|
+
"install:dry-run": "node scripts/install/install-user-skills.mjs --dry-run",
|
|
44
|
+
"verify:loop": "node scripts/loop/oris-loop-verify.mjs --temp"
|
|
45
|
+
},
|
|
46
|
+
"engines": {
|
|
47
|
+
"node": ">=20"
|
|
48
|
+
}
|
|
49
|
+
}
|
|
@@ -0,0 +1,107 @@
|
|
|
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
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# Oris Conventions
|
|
2
|
+
|
|
3
|
+
Shared rules for every Oris skill. Skills reference this file instead of repeating it.
|
|
4
|
+
|
|
5
|
+
## Paths
|
|
6
|
+
|
|
7
|
+
`references/…`, `skills/…`, `agents/…` = Oris bundle root.
|
|
8
|
+
- Installed: `~/.oris/oris-skills/`
|
|
9
|
+
- Repo checkout: repository root.
|
|
10
|
+
|
|
11
|
+
## Questions
|
|
12
|
+
|
|
13
|
+
- ASK with the platform question UI (Cursor `AskQuestion`, Claude `AskUserQuestion`); ELSE ask plainly in chat.
|
|
14
|
+
- ONE question per turn. Recommended answer FIRST.
|
|
15
|
+
- ALWAYS include, localized to `uiLanguage`:
|
|
16
|
+
- `Explain the options` / `Spiega le opzioni` — explain, then re-ask.
|
|
17
|
+
- During interviews: `Enough questions — proceed` / `Basta domande — procedi` (early exit).
|
|
18
|
+
- NEVER ask what the workspace, docs, code, or setup map already answer. Explore first.
|
|
19
|
+
|
|
20
|
+
## Language
|
|
21
|
+
|
|
22
|
+
- READ `references/settings.md` (user settings: `~/.oris/settings.json`).
|
|
23
|
+
- Chat + questions: `uiLanguage`. Generated documents: `artifactLanguage`. Default both: `en`.
|
|
24
|
+
|
|
25
|
+
## Setup map
|
|
26
|
+
|
|
27
|
+
- WHEN `.oris-flow/manifest.json` exists: read it + only the relevant `.oris-flow/maps/**` sections BEFORE scanning broadly.
|
|
28
|
+
- VERIFY stale or high-risk map facts against the repository before consequential actions.
|
|
29
|
+
|
|
30
|
+
## Gates
|
|
31
|
+
|
|
32
|
+
- NEVER write documents, code, settings, Git, or DevOps without explicit user confirmation in this flow.
|
|
33
|
+
- The skill that performs the action owns its confirmation gate; routing never grants it.
|
|
34
|
+
- NEVER store secrets in `.oris-flow/**`, docs, receipts, or logs. Mask passwords as `***`.
|
|
35
|
+
|
|
36
|
+
## Subagents
|
|
37
|
+
|
|
38
|
+
- USE parallel subagents for independent scans when the platform has them (Cursor subagents, Claude Task tool).
|
|
39
|
+
- KEEP subagent output compact: summaries and pointers, not raw logs.
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Oris Documentation Policy
|
|
2
|
+
|
|
3
|
+
Applies whenever an Oris skill writes or updates task documentation. Project-agnostic.
|
|
4
|
+
|
|
5
|
+
## Task folder
|
|
6
|
+
|
|
7
|
+
One folder per feature, whole lifecycle:
|
|
8
|
+
|
|
9
|
+
| File | Purpose | Written by |
|
|
10
|
+
|------|---------|------------|
|
|
11
|
+
| `docs/tasks/{task}/functional-analysis.md` | confirmed business behavior | discover |
|
|
12
|
+
| `docs/tasks/{task}/acceptance-criteria.md` | QA criteria, stable `AC-xxx` IDs | criteria |
|
|
13
|
+
| `docs/tasks/{task}/implementation-plan.md` | execution-ready technical plan | plan |
|
|
14
|
+
|
|
15
|
+
NEVER split one feature's docs across unrelated directories.
|
|
16
|
+
|
|
17
|
+
## Rules
|
|
18
|
+
|
|
19
|
+
1. Language: documents in `artifactLanguage`; skill instructions stay English.
|
|
20
|
+
2. Steps are independent: any document may be created without the previous one. State the missing source once, use the strongest confirmed source, record the gap in the document ("not available" localized). Never block on a missing predecessor.
|
|
21
|
+
3. INSPECT the task folder + setup map before asking the user or writing.
|
|
22
|
+
4. Every document ends with a change-history table: date | source | change | reason. Later changes rewrite the affected sections AND add a history row — no inline "changed!" notes.
|
|
23
|
+
5. Facts only from confirmed sources; open questions go to open points. NEVER invent behavior, labels, or commands.
|
|
24
|
+
6. Verification artifacts (test plans, specs) are technical follow-ups owned by loops or the project's own conventions — they never replace `acceptance-criteria.md`.
|