@azure-id/orc 1.6.0 → 1.7.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/CHANGELOG.md +110 -0
- package/README-id.md +206 -125
- package/README.md +274 -74
- package/bin/cli.js +1595 -2
- package/bin/mockrun-catalog.js +272 -267
- package/bin/verify-contracts.js +4527 -4509
- package/bin/verify-package.js +6 -0
- package/bin/webui/api.js +26 -0
- package/bin/webui/app.html +10 -0
- package/bin/webui/css/panels/knowledge.css +30 -0
- package/bin/webui/css/panels/rules.css +145 -0
- package/bin/webui/fixtures/index.js +27 -0
- package/bin/webui/fixtures/rules.js +1002 -0
- package/bin/webui/fixtures/wiki-one.js +198 -0
- package/bin/webui/i18n/en/knowledge.json +127 -117
- package/bin/webui/i18n/en/nav.json +1 -0
- package/bin/webui/i18n/en/rules.json +55 -0
- package/bin/webui/i18n/id/knowledge.json +127 -117
- package/bin/webui/i18n/id/nav.json +1 -0
- package/bin/webui/i18n/id/rules.json +55 -0
- package/bin/webui/js/01-i18n.js +1 -0
- package/bin/webui/js/panels/knowledge.js +117 -1
- package/bin/webui/js/panels/rules.js +351 -0
- package/mock-run/INDEX.md +107 -106
- package/mock-run/orc-rules.md +254 -0
- package/package.json +1 -1
- package/templates/commands/orc-rules.md +66 -0
- package/templates/commands/orc-wiki.md +23 -1
- package/templates/skills/_shared/README.md +61 -54
- package/templates/skills/_shared/phases/README.md +1 -0
- package/templates/skills/_shared/phases/preflight.md +20 -0
- package/templates/skills/_shared/phases/rules.md +154 -0
- package/templates/skills/_shared/return-validation.md +28 -0
- package/templates/skills/_shared/rules/CREDITS.md +141 -0
- package/templates/skills/_shared/rules/INDEX.md +107 -0
- package/templates/skills/_shared/rules/code.md +229 -0
- package/templates/skills/_shared/rules/delivery.md +114 -0
- package/templates/skills/_shared/rules/ui.md +139 -0
- package/templates/skills/_shared/rules/writing.md +223 -0
- package/templates/skills/context-combiner/SKILL.md +9 -1
- package/templates/skills/orc/SKILL.md +7 -0
- package/templates/skills/orc-aftermath/SKILL.md +7 -0
- package/templates/skills/orc-analyze/SKILL.md +7 -0
- package/templates/skills/orc-analyze-mini/SKILL.md +9 -1
- package/templates/skills/orc-boundary/SKILL.md +7 -0
- package/templates/skills/orc-brainstorm/SKILL.md +7 -0
- package/templates/skills/orc-budget/SKILL.md +7 -0
- package/templates/skills/orc-challenge/SKILL.md +7 -0
- package/templates/skills/orc-claude/SKILL.md +7 -0
- package/templates/skills/orc-diy/SKILL.md +7 -0
- package/templates/skills/orc-explain/SKILL.md +7 -0
- package/templates/skills/orc-export/SKILL.md +7 -0
- package/templates/skills/orc-fast/SKILL.md +7 -0
- package/templates/skills/orc-grill/SKILL.md +7 -0
- package/templates/skills/orc-handoff/SKILL.md +9 -1
- package/templates/skills/orc-learn/SKILL.md +7 -0
- package/templates/skills/orc-mini/SKILL.md +7 -0
- package/templates/skills/orc-pact/SKILL.md +7 -0
- package/templates/skills/orc-poly/SKILL.md +7 -0
- package/templates/skills/orc-pr-driver/SKILL.md +9 -1
- package/templates/skills/orc-pr-setup/SKILL.md +9 -1
- package/templates/skills/orc-quick/SKILL.md +7 -0
- package/templates/skills/orc-retro/SKILL.md +7 -0
- package/templates/skills/orc-route/SKILL.md +7 -0
- package/templates/skills/orc-test/SKILL.md +7 -0
- package/templates/skills/orc-verify/SKILL.md +7 -0
- package/templates/skills/orc-wiki/SKILL.md +15 -0
- package/templates/skills/orc-wiki/references/partial-refresh.md +68 -0
- package/templates/skills/orc-wiki/references/phases/phase-0.md +15 -1
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
<!-- orc-rules:pack id=delivery prefix=OSD layer=core -->
|
|
2
|
+
|
|
3
|
+
# ORC RULES · Delivery (`OSD`)
|
|
4
|
+
|
|
5
|
+
> **READ-ONLY.** This file ships with ORC and changes only with `orc update`.
|
|
6
|
+
> Your own rules go in `.claude/orc/rules.md`, and **yours win** wherever the two
|
|
7
|
+
> disagree.
|
|
8
|
+
|
|
9
|
+
**Applies to** what an agent reports about its own work: a subagent return, a
|
|
10
|
+
phase report, a gate verdict, a ship summary, and what it says in chat.
|
|
11
|
+
|
|
12
|
+
This pack is in the **`core`** layer, so it rides in every slice of every lane
|
|
13
|
+
that carries rules at all. Prose style is optional in some lanes. Honesty is not.
|
|
14
|
+
|
|
15
|
+
**Source.** [`ehmo/slopkit`](https://github.com/ehmo/slopkit), the `slopgent`
|
|
16
|
+
skill · Miqdad Badjuber — [`miqdadbadjuber/anti-slop`](https://github.com/miqdadbadjuber/anti-slop) R-35 ·
|
|
17
|
+
[`BioInfo/slopless`](https://github.com/BioInfo/slopless) quality gates.
|
|
18
|
+
Full attribution in `CREDITS.md`.
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
### OSD-01 · HARD · Separate what changed from what is verified
|
|
23
|
+
|
|
24
|
+
Two different facts, always reported as two facts.
|
|
25
|
+
|
|
26
|
+
```
|
|
27
|
+
Edited verifyToken at auth.ts:42. Tests not run yet.
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
Not "fixed the token bug". Editing is an observation. Fixing is a claim, and a
|
|
31
|
+
claim needs a run behind it.
|
|
32
|
+
|
|
33
|
+
### OSD-02 · HARD · Never report an unrun tool
|
|
34
|
+
|
|
35
|
+
Never say a command ran, a test passed, a build succeeded, a file was read or a
|
|
36
|
+
page was fetched when it did not happen in this session. Not as a summary, not
|
|
37
|
+
as a plan restated in the past tense, not as an inference from the diff.
|
|
38
|
+
|
|
39
|
+
This is the single most damaging rule in the pack to break, because everything
|
|
40
|
+
downstream trusts it.
|
|
41
|
+
|
|
42
|
+
### OSD-03 · HARD · No invented confidence
|
|
43
|
+
|
|
44
|
+
Cut "this should work now", "definitely fixed", "should be perfect", "that ought
|
|
45
|
+
to do it". Confidence is reported from evidence or it is not reported.
|
|
46
|
+
|
|
47
|
+
Say what you observed and what remains unknown.
|
|
48
|
+
|
|
49
|
+
### OSD-04 · HARD · Cut empty hedges, keep load-bearing caveats
|
|
50
|
+
|
|
51
|
+
The two look alike and are opposites.
|
|
52
|
+
|
|
53
|
+
- **Empty hedge**, cut it: "this might possibly help", "hopefully that works".
|
|
54
|
+
- **Load-bearing caveat**, keep it: "this only covers the JSON path; the
|
|
55
|
+
multipart branch is untested", "this assumes the column is already indexed".
|
|
56
|
+
|
|
57
|
+
The test is whether a reader could act on it. Scope, risk and uncertainty are
|
|
58
|
+
load-bearing. A "be concise" instruction cuts both; this rule cuts one.
|
|
59
|
+
|
|
60
|
+
### OSD-05 · HARD · No apology theatre
|
|
61
|
+
|
|
62
|
+
State the cause and the fix. No "I apologise for the confusion", no "you're
|
|
63
|
+
absolutely right, my mistake", no paragraph of contrition before the correction.
|
|
64
|
+
|
|
65
|
+
One correction, plainly, then continue.
|
|
66
|
+
|
|
67
|
+
### OSD-06 · LOCK · An estimate names its driving variable
|
|
68
|
+
|
|
69
|
+
Never anchor on human-effort time ("this would take a developer two days").
|
|
70
|
+
Name what actually creates the uncertainty — file count, test-suite size, build
|
|
71
|
+
repetitions, number of call sites — then pin it with a measurement where one
|
|
72
|
+
exists.
|
|
73
|
+
|
|
74
|
+
### OSD-07 · LOCK · No trailing recap
|
|
75
|
+
|
|
76
|
+
No closing paragraph restating what was just done. The user reads the diff and
|
|
77
|
+
the return. A recap is a second copy of information they already have.
|
|
78
|
+
|
|
79
|
+
Report what is **unfinished**, **unverified** or **decided**. Not what is visible.
|
|
80
|
+
|
|
81
|
+
### OSD-08 · HARD · An honest partial beats a false done
|
|
82
|
+
|
|
83
|
+
Report what is unmet. Never round up, never mark a criterion met because
|
|
84
|
+
everything around it is. A task that is 80% done is reported as 80% done with
|
|
85
|
+
the missing 20% named.
|
|
86
|
+
|
|
87
|
+
Cites house card rule 6.
|
|
88
|
+
|
|
89
|
+
### OSD-09 · LOCK · One issue at a time
|
|
90
|
+
|
|
91
|
+
When raising a problem that needs the user, raise one. A list of five concerns
|
|
92
|
+
in one turn gets one answer covering none of them.
|
|
93
|
+
|
|
94
|
+
Exception: a batch the user explicitly asked to be batched, and a round of
|
|
95
|
+
questions in an interview phase, where the format is the point.
|
|
96
|
+
|
|
97
|
+
### OSD-10 · HARD · No verification theatre
|
|
98
|
+
|
|
99
|
+
A PASS with no record of what was actually exercised is not a PASS.
|
|
100
|
+
|
|
101
|
+
Report the check element by element: the command that ran and its exit code, the
|
|
102
|
+
test names, the click-through if it was a UI, the file and line for each
|
|
103
|
+
criterion. If the deliverable could not be run, say so and say that the check
|
|
104
|
+
was code inspection instead. Never imply a run that did not happen.
|
|
105
|
+
|
|
106
|
+
---
|
|
107
|
+
|
|
108
|
+
## Not a ban — keep these
|
|
109
|
+
|
|
110
|
+
- Every caveat on the `OSD-04` load-bearing list.
|
|
111
|
+
- An explicit "I do not know" or "I did not check".
|
|
112
|
+
- A one-line correction of a real earlier error.
|
|
113
|
+
- The exact command, path, error code and exit status. Those are the evidence,
|
|
114
|
+
and they are never clutter.
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
<!-- orc-rules:pack id=ui prefix=OSU layer=ui -->
|
|
2
|
+
|
|
3
|
+
# ORC RULES · UI (`OSU`)
|
|
4
|
+
|
|
5
|
+
> **READ-ONLY.** This file ships with ORC and changes only with `orc update`.
|
|
6
|
+
> Your own rules go in `.claude/orc/rules.md`, and **yours win** wherever the two
|
|
7
|
+
> disagree.
|
|
8
|
+
|
|
9
|
+
**Applies to** front-end work only. This pack rides **per task**, never per lane:
|
|
10
|
+
the orchestrator adds it to a slice whose declared files are front-end. A UI rule
|
|
11
|
+
in a backend slice is tokens paid for nothing.
|
|
12
|
+
|
|
13
|
+
**This is a filter, not a style guide.** It prescribes no colour, no typeface and
|
|
14
|
+
no layout. It rejects **technique without purpose**. Where the project has a
|
|
15
|
+
design direction — a `DESIGN.md`, a brand guide, a design system — that
|
|
16
|
+
direction is the identity and this pack only filters on top of it. A bold palette
|
|
17
|
+
is identity. A blue-to-purple gradient chosen because it was the default is slop.
|
|
18
|
+
|
|
19
|
+
**Source.** Miqdad Badjuber — [`miqdadbadjuber/anti-slop`](https://github.com/miqdadbadjuber/anti-slop), rules R-01 to R-38 (MIT).
|
|
20
|
+
Full attribution in `CREDITS.md`.
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
### OSU-01 · HARD · No dead controls
|
|
25
|
+
|
|
26
|
+
Every interactive element does something real, or it does not exist:
|
|
27
|
+
|
|
28
|
+
- a link or button that reaches a destination that exists
|
|
29
|
+
- a modal that opens and closes, and closes on `Escape`
|
|
30
|
+
- a toggle that changes state
|
|
31
|
+
- an external action (`mailto:`, a real URL)
|
|
32
|
+
- a form that submits and shows feedback
|
|
33
|
+
|
|
34
|
+
A button that does nothing is a defect, not decoration. A nav item pointing at a
|
|
35
|
+
section that does not exist is the same defect. If it cannot have a destination
|
|
36
|
+
yet, remove it, or label it "Coming soon" **and** leave a `TODO` that names the
|
|
37
|
+
task (`OSC-05`).
|
|
38
|
+
|
|
39
|
+
### OSU-02 · HARD · Three states minimum
|
|
40
|
+
|
|
41
|
+
Any view that displays data has an **empty** state, a **loading** state and an
|
|
42
|
+
**error** state. A UI built only for the ideal condition is not finished.
|
|
43
|
+
|
|
44
|
+
These are not extras. They are part of the view.
|
|
45
|
+
|
|
46
|
+
### OSU-03 · HARD · Accessible by default
|
|
47
|
+
|
|
48
|
+
- WCAG AA contrast: 4.5:1 for body text, 3:1 for large text (18px+). Test across
|
|
49
|
+
the whole area the text crosses, not one point.
|
|
50
|
+
- Every interactive element reachable with `Tab` and `Shift+Tab`, in visual
|
|
51
|
+
order, and operable with `Enter` or `Space`.
|
|
52
|
+
- Every focused element has a visible focus indicator.
|
|
53
|
+
- Never `outline: none` or `outline: 0` without a better replacement.
|
|
54
|
+
|
|
55
|
+
A UI that needs a mouse is unfinished.
|
|
56
|
+
|
|
57
|
+
Partly checked by `orc rules lint` (`outline: none` with no replacement).
|
|
58
|
+
|
|
59
|
+
### OSU-04 · HARD · Real content or an honest placeholder
|
|
60
|
+
|
|
61
|
+
No fabricated testimonial, statistic, customer logo, team member, review, or
|
|
62
|
+
security or compliance claim. No number without a real source.
|
|
63
|
+
|
|
64
|
+
A placeholder is written as what it is: `[REAL DATA]`, `[LOGO]`, "Coming soon".
|
|
65
|
+
Never disguised as final.
|
|
66
|
+
|
|
67
|
+
**An empty section beats a fabricated one.** If there are no testimonials, there
|
|
68
|
+
is no testimonials section.
|
|
69
|
+
|
|
70
|
+
### OSU-05 · LOCK · No generic CTA
|
|
71
|
+
|
|
72
|
+
"Get Started", "Learn More", "Try Now", "Explore", "Discover" name no action.
|
|
73
|
+
Name the action: "Start the free trial", "Watch the 2-minute demo", "Create an
|
|
74
|
+
account".
|
|
75
|
+
|
|
76
|
+
### OSU-06 · HARD · No buzzword UI copy
|
|
77
|
+
|
|
78
|
+
Never in shipped interface text: "AI Powered" · "Next Generation" ·
|
|
79
|
+
"Revolutionary" · "Seamless" · "Cutting Edge" · "Intelligent" · "Ultimate" ·
|
|
80
|
+
"Powerful" · "Effortless" · "Supercharged".
|
|
81
|
+
|
|
82
|
+
Say what it does. Show evidence, not adjectives.
|
|
83
|
+
|
|
84
|
+
Checked by `orc rules lint`.
|
|
85
|
+
|
|
86
|
+
### OSU-07 · PURPOSE · Decoration needs a written reason
|
|
87
|
+
|
|
88
|
+
Each of these is **allowed** and fails only as an unexplained default. Write the
|
|
89
|
+
one-line reason it serves hierarchy, identity or readability:
|
|
90
|
+
|
|
91
|
+
- gradient as a primary colour (blue→purple, blue→cyan, purple→pink especially)
|
|
92
|
+
- glassmorphism · **dose cap: at most two elements**, never navbar + cards +
|
|
93
|
+
modal + sidebar together
|
|
94
|
+
- glow · **dose cap: at most two elements**
|
|
95
|
+
- capsule badge with no real status behind it
|
|
96
|
+
- a button arrow as every button's identity
|
|
97
|
+
- grid, dot, blueprint or graph-paper background
|
|
98
|
+
- sparkle, star, magic, lightning, diamond, orb or robot as a feature icon
|
|
99
|
+
- an animation stack (fade-up + float + scale + bounce) on everything
|
|
100
|
+
- a generic illustration set with no connection to the product
|
|
101
|
+
|
|
102
|
+
A gradient that separates one level of hierarchy from another is craft. The same
|
|
103
|
+
gradient covering the page is slop. The technique is not the problem.
|
|
104
|
+
|
|
105
|
+
### OSU-08 · LOCK · Do not clone a named product
|
|
106
|
+
|
|
107
|
+
Do not build a visual that copies another product's look unless the user asked
|
|
108
|
+
for it by name. References are inspiration, not a template.
|
|
109
|
+
|
|
110
|
+
Models default to cloning the products that dominate their training data. Notice
|
|
111
|
+
when that is what is happening.
|
|
112
|
+
|
|
113
|
+
### OSU-09 · HARD · Mobile is part of the design
|
|
114
|
+
|
|
115
|
+
No horizontal overflow. Text stays inside its container. Cards do not collide or
|
|
116
|
+
clip. The navbar stays usable. Tap targets meet 44px. Spacing stays consistent
|
|
117
|
+
across breakpoints.
|
|
118
|
+
|
|
119
|
+
Responsiveness is not an add-on and not a follow-up task.
|
|
120
|
+
|
|
121
|
+
### OSU-10 · HARD · Every decision has a one-line reason
|
|
122
|
+
|
|
123
|
+
Before calling a UI done, write one line for each major decision: why this
|
|
124
|
+
colour, this layout, this typeface, this spacing, this card, this icon.
|
|
125
|
+
|
|
126
|
+
If the reason cannot be written in one line, the decision is not settled. This
|
|
127
|
+
is the keystone of the pack — it is what `OSU-07` checks against, and it is the
|
|
128
|
+
whole mechanism by which "technique with purpose" is distinguishable from
|
|
129
|
+
"technique by default".
|
|
130
|
+
|
|
131
|
+
---
|
|
132
|
+
|
|
133
|
+
## Not a ban — keep these
|
|
134
|
+
|
|
135
|
+
- Anything the project's own design direction specifies. Identity is not slop.
|
|
136
|
+
- A technique with its reason written. That is the pass condition, not an
|
|
137
|
+
exception to it.
|
|
138
|
+
- A deliberate uniform layout, when uniformity is the stated choice rather than
|
|
139
|
+
the default that happened.
|
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
<!-- orc-rules:pack id=writing prefix=OSW layer=writing -->
|
|
2
|
+
|
|
3
|
+
# ORC RULES · Writing (`OSW`)
|
|
4
|
+
|
|
5
|
+
> **READ-ONLY.** This file ships with ORC and changes only with `orc update`.
|
|
6
|
+
> Your own rules go in `.claude/orc/rules.md` (`orc rules add --priority P0
|
|
7
|
+
> --text "…"`), and **yours win** wherever the two disagree.
|
|
8
|
+
|
|
9
|
+
**Applies to** every word an agent writes: wiki docs, analysis reports, plans,
|
|
10
|
+
requirement specs, commit bodies, PR descriptions, and what it says in chat.
|
|
11
|
+
|
|
12
|
+
**Source.** Peter G. Yang — [`petergyang/no-ai-slop`](https://github.com/petergyang/no-ai-slop) (MIT) ·
|
|
13
|
+
Miqdad Badjuber — [`miqdadbadjuber/anti-slop`](https://github.com/miqdadbadjuber/anti-slop), the `antislop-copywriting` skill (MIT) ·
|
|
14
|
+
Matty Cartwright — [The Anti-Slop Writing Rules](https://mattycartwright.com/blog/the-anti-slop-writing-rules).
|
|
15
|
+
Full attribution in `CREDITS.md`.
|
|
16
|
+
|
|
17
|
+
**Tiers.** `HARD` absolute · `PURPOSE` allowed with a written one-line reason ·
|
|
18
|
+
`LOCK` a consistency requirement, reported but never blocking.
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
### OSW-01 · HARD · Lead with the point
|
|
23
|
+
|
|
24
|
+
No throat-clearing opener. Cut "Here's the thing", "Here's what I mean", "Let me
|
|
25
|
+
be clear", "I'll be honest", "The uncomfortable truth is". State the point.
|
|
26
|
+
|
|
27
|
+
Keep a personal aside, a story or an admission when it creates context or
|
|
28
|
+
tension. The ban is on the empty run-up, not on character.
|
|
29
|
+
|
|
30
|
+
### OSW-02 · HARD · No binary contrast
|
|
31
|
+
|
|
32
|
+
Cut "It's not X, it's Y", "The question isn't X, it's Y", "It's not just X but
|
|
33
|
+
Y", and negative listing ("Not a X. Not a Y. A Z."). State Y directly.
|
|
34
|
+
|
|
35
|
+
"The question isn't the model. It's the eval." becomes "The eval matters more
|
|
36
|
+
than the model."
|
|
37
|
+
|
|
38
|
+
### OSW-03 · HARD · No faux-insight setup
|
|
39
|
+
|
|
40
|
+
Cut "What nobody tells you", "the part everyone misses", "what most people get
|
|
41
|
+
wrong", "this is the part most people skip". The setup flatters the writer and
|
|
42
|
+
carries no information. Make the claim stand on its own.
|
|
43
|
+
|
|
44
|
+
### OSW-04 · LOCK · No colon reveal
|
|
45
|
+
|
|
46
|
+
A noun phrase, a colon, then a dramatic lowercase reveal is a generated shape:
|
|
47
|
+
"The detail that makes it work: a separate agent grades it." Rewrite as a plain
|
|
48
|
+
sentence. Colons are for lists, labels and quotes.
|
|
49
|
+
|
|
50
|
+
### OSW-05 · HARD · No fake-profound kicker, no summary recap
|
|
51
|
+
|
|
52
|
+
Cut the final "deep" line that turns the point into an aphorism or a mic drop.
|
|
53
|
+
Do not rewrite it into a better metaphor. Delete it.
|
|
54
|
+
|
|
55
|
+
Cut "In conclusion", "Ultimately", "Overall" and the closing paragraph that
|
|
56
|
+
restates the piece. End on the last concrete point, the takeaway, or the next
|
|
57
|
+
action.
|
|
58
|
+
|
|
59
|
+
### OSW-06 · HARD · No importance puffery
|
|
60
|
+
|
|
61
|
+
Cut "marks a pivotal moment", "underscores its significance", "plays a vital
|
|
62
|
+
role", "stands as a testament", "solidifies its position". State the fact and
|
|
63
|
+
let the reader judge whether it matters.
|
|
64
|
+
|
|
65
|
+
"The launch marks a pivotal moment for the company" becomes "The launch is the
|
|
66
|
+
company's first paid product."
|
|
67
|
+
|
|
68
|
+
### OSW-07 · HARD · No `-ing` pseudo-analysis
|
|
69
|
+
|
|
70
|
+
Cut trailing clauses that pretend to explain meaning: "highlighting",
|
|
71
|
+
"underscoring", "reflecting", "showcasing", "demonstrating". Replace with the
|
|
72
|
+
actual consequence.
|
|
73
|
+
|
|
74
|
+
"The launch adds file search, highlighting the team's commitment to workflows"
|
|
75
|
+
becomes "The launch adds file search, so users find old drafts without leaving
|
|
76
|
+
the editor."
|
|
77
|
+
|
|
78
|
+
### OSW-08 · HARD · No weasel attribution
|
|
79
|
+
|
|
80
|
+
Cut "experts agree", "studies show", "industry reports suggest", "many argue",
|
|
81
|
+
"widely regarded as". Name the source, or cut the claim. If there is no source,
|
|
82
|
+
ask. Never invent one.
|
|
83
|
+
|
|
84
|
+
### OSW-09 · LOCK · No synonym cycling
|
|
85
|
+
|
|
86
|
+
If the clear word is right, repeat it. Do not rotate terms for style. "The agent
|
|
87
|
+
reviews the draft. The assistant scores the piece. The tool suggests fixes"
|
|
88
|
+
becomes "The agent reviews the draft, scores it, and suggests fixes."
|
|
89
|
+
|
|
90
|
+
This matters more in technical writing than anywhere else: a second name for one
|
|
91
|
+
thing reads as a second thing.
|
|
92
|
+
|
|
93
|
+
### OSW-10 · HARD · Banned lexicon
|
|
94
|
+
|
|
95
|
+
Never use, in any output: delve · leverage · utilize · facilitate · empower ·
|
|
96
|
+
streamline · robust · cutting-edge · paradigm shift · game changer · tapestry ·
|
|
97
|
+
realm · beacon · multifaceted · meticulous · intricate · paramount ·
|
|
98
|
+
transformative · elevate · embark · supercharge · harness · ever-evolving ·
|
|
99
|
+
seamless · unleash · pivotal.
|
|
100
|
+
|
|
101
|
+
Use the plain word. "Utilize" is "use". "Leverage" is "use". "Facilitate" is
|
|
102
|
+
"help" or the verb for what actually happens.
|
|
103
|
+
|
|
104
|
+
Checked by `orc rules lint`.
|
|
105
|
+
|
|
106
|
+
### OSW-11 · HARD · Banned phrases
|
|
107
|
+
|
|
108
|
+
Never use: "it's worth noting" · "it's important to note" · "at the end of the
|
|
109
|
+
day" · "when it comes to" · "at its core" · "in today's world" · "in the age
|
|
110
|
+
of" · "in the world of" · "the reality is" · "the truth is" · "in terms of" ·
|
|
111
|
+
"with regard to" · "going forward" · "let's dive in" · "in this article".
|
|
112
|
+
|
|
113
|
+
Every one of them delays the point by a clause. Delete the clause and keep the
|
|
114
|
+
point.
|
|
115
|
+
|
|
116
|
+
Checked by `orc rules lint`.
|
|
117
|
+
|
|
118
|
+
### OSW-12 · PURPOSE · Hedge adverbs earn their place
|
|
119
|
+
|
|
120
|
+
Cut when they add nothing: just · literally · honestly · simply · actually ·
|
|
121
|
+
truly · fundamentally · importantly · crucially · inherently · inevitably.
|
|
122
|
+
|
|
123
|
+
Keep one when it carries real uncertainty, a real contrast, or the writer's own
|
|
124
|
+
rhythm. That is the written reason.
|
|
125
|
+
|
|
126
|
+
### OSW-13 · PURPOSE · Em dash dose cap
|
|
127
|
+
|
|
128
|
+
This is a **dose rule, not a ban.** The em dash is a real punctuation mark and
|
|
129
|
+
ORC's own documentation uses it.
|
|
130
|
+
|
|
131
|
+
- Short output (a chat answer, a commit body, a CTA, a label): none.
|
|
132
|
+
- A long document: at most two per thousand words, and only where the dash
|
|
133
|
+
clearly beats a comma, a period or parentheses.
|
|
134
|
+
- Never as a rhythm crutch, and never in clusters.
|
|
135
|
+
|
|
136
|
+
`orc rules lint` reports **density**, not presence.
|
|
137
|
+
|
|
138
|
+
### OSW-14 · LOCK · No rule-of-three padding
|
|
139
|
+
|
|
140
|
+
Three items only when there are three items. Do not invent a third to complete
|
|
141
|
+
the cadence, and do not drop a fourth to preserve it.
|
|
142
|
+
|
|
143
|
+
### OSW-15 · HARD · No staccato drama
|
|
144
|
+
|
|
145
|
+
Cut "X. And Y. And Z.", "That's it. That's the whole thing.", and stacked punchy
|
|
146
|
+
fragments. Use complete sentences. Vary sentence shape only when it helps the
|
|
147
|
+
point.
|
|
148
|
+
|
|
149
|
+
### OSW-16 · HARD · No rhetorical setup
|
|
150
|
+
|
|
151
|
+
Cut "What if I told you…", "Think about it:", "Plot twist:", and self-answered
|
|
152
|
+
"Question? Answer." pairs. Make the point.
|
|
153
|
+
|
|
154
|
+
### OSW-17 · HARD · No interpretive metadiscourse
|
|
155
|
+
|
|
156
|
+
Cut lines that step outside the subject to tell the reader what to notice: "That
|
|
157
|
+
last part matters more than it sounds", "The key point is", "As you can see",
|
|
158
|
+
"This distinction matters", and a redundant "In other words".
|
|
159
|
+
|
|
160
|
+
If the point is clear, delete the aside. If it is not, add the fact that would
|
|
161
|
+
make it clear.
|
|
162
|
+
|
|
163
|
+
### OSW-18 · LOCK · No formatting slop
|
|
164
|
+
|
|
165
|
+
- No emoji in a heading (checked by `orc rules lint`).
|
|
166
|
+
- No bold sprinkled mid-sentence for emphasis.
|
|
167
|
+
- No heading over a two-sentence section.
|
|
168
|
+
- No bullet list where two sentences of prose read better.
|
|
169
|
+
- No table with one column of real content.
|
|
170
|
+
|
|
171
|
+
Format follows the content. It does not decorate it.
|
|
172
|
+
|
|
173
|
+
### OSW-19 · LOCK · Active voice, real actors
|
|
174
|
+
|
|
175
|
+
"The team shipped it Tuesday" beats "the decision emerged". Never let an
|
|
176
|
+
inanimate thing do a human verb: an architecture does not believe, a module does
|
|
177
|
+
not want, a decision does not emerge.
|
|
178
|
+
|
|
179
|
+
Passive voice is allowed when the actor is genuinely unknown or genuinely
|
|
180
|
+
irrelevant, and only then.
|
|
181
|
+
|
|
182
|
+
### OSW-20 · LOCK · The portability test
|
|
183
|
+
|
|
184
|
+
If a sentence could move unchanged to another project, another company or
|
|
185
|
+
another product, it is filler. Replace it with a fact, a mechanism, a
|
|
186
|
+
consequence, or a judgement specific to this subject. Otherwise cut it.
|
|
187
|
+
|
|
188
|
+
### OSW-21 · LOCK · Concrete beats abstract
|
|
189
|
+
|
|
190
|
+
Names, numbers, dates, file paths, commands, error codes and examples beat
|
|
191
|
+
abstractions. "The integration improved efficiency" becomes "The integration cut
|
|
192
|
+
deploy time from 40 minutes to 4."
|
|
193
|
+
|
|
194
|
+
Protect the specific fact. Never smooth a useful detail into generic importance.
|
|
195
|
+
|
|
196
|
+
### OSW-22 · HARD · A human's paragraph is not yours to restyle
|
|
197
|
+
|
|
198
|
+
Never rewrite user-authored prose to match this pack. Preserve the writer's
|
|
199
|
+
vocabulary, bluntness, humour, digressions and level of polish.
|
|
200
|
+
|
|
201
|
+
This rule beats every other rule in this file. A pack that flattens the human
|
|
202
|
+
voice it was written to protect has failed.
|
|
203
|
+
|
|
204
|
+
### OSW-23 · HARD · Never invent a specific
|
|
205
|
+
|
|
206
|
+
No invented number, date, name, version, benchmark or range. No "anywhere from X
|
|
207
|
+
to Y" that nothing measured. No filled-in gap presented as a fact.
|
|
208
|
+
|
|
209
|
+
If the number is needed and unknown, say it is unknown, or ask.
|
|
210
|
+
|
|
211
|
+
---
|
|
212
|
+
|
|
213
|
+
## Not a ban — keep these
|
|
214
|
+
|
|
215
|
+
Never cut, in the name of this pack:
|
|
216
|
+
|
|
217
|
+
- A load-bearing caveat about scope, risk or uncertainty (see `delivery.md`, OSD-04).
|
|
218
|
+
- A named source, a file path, a command, an error code, a version.
|
|
219
|
+
- The user's own words, anywhere (OSW-22).
|
|
220
|
+
- A hedge that reports real uncertainty rather than decorating a claim.
|
|
221
|
+
|
|
222
|
+
**Removing slop leaves a void.** The fix for flat prose is never more bans — it
|
|
223
|
+
is a fact, a mechanism, or a consequence the reader did not have.
|
|
@@ -211,4 +211,12 @@ exit code, and never re-derive a state word — the CLI's state words are the on
|
|
|
211
211
|
state words, and **an exit code is an ANSWER wherever that contract says so, not
|
|
212
212
|
a failure**. A call the answer does not name is a call this lane does not make.
|
|
213
213
|
Exit ≠ 0 from the catalogue itself → say the CLI is unavailable and name the
|
|
214
|
-
command you are about to run, out loud, before running it.
|
|
214
|
+
command you are about to run, out loud, before running it.
|
|
215
|
+
|
|
216
|
+
## Rules — the anti-slop card (`../_shared/phases/rules.md`)
|
|
217
|
+
|
|
218
|
+
`orc rules slice --lane context-combiner --json` is the ONLY assembler; never build
|
|
219
|
+
the card here. It rides under the house rules and above the task —
|
|
220
|
+
**house rules > your project's rules > ORC's own packs** — and its `line` prints
|
|
221
|
+
VERBATIM at preflight. Returns gain `rules_applied[]`, `rules_conflicts[]` (a gap,
|
|
222
|
+
never a silent choice) and `rules_overridden[]`.
|
|
@@ -111,6 +111,13 @@ the CLI is unavailable and fall back to `../_shared/config-precedence.md`'s
|
|
|
111
111
|
documented defaults, out loud. Priorities and families:
|
|
112
112
|
`../_shared/config-precedence.md`.
|
|
113
113
|
|
|
114
|
+
## Rules — the anti-slop card (`../_shared/phases/rules.md`)
|
|
115
|
+
|
|
116
|
+
`orc rules slice --lane orc --json` is the ONLY assembler; never build
|
|
117
|
+
the card here. It rides under the house rules and above the task —
|
|
118
|
+
**house rules > your project's rules > ORC's own packs** — and its `line` prints
|
|
119
|
+
VERBATIM at preflight. Returns gain `rules_applied[]`, `rules_conflicts[]` (a gap,
|
|
120
|
+
never a silent choice) and `rules_overridden[]`.
|
|
114
121
|
## Calls
|
|
115
122
|
|
|
116
123
|
**ONE catalogue, and it is not you:** `orc lane calls orc --json` names every
|
|
@@ -152,6 +152,13 @@ a failure**. A call the answer does not name is a call this lane does not make.
|
|
|
152
152
|
Exit ≠ 0 from the catalogue itself → say the CLI is unavailable and name the
|
|
153
153
|
command you are about to run, out loud, before running it.
|
|
154
154
|
|
|
155
|
+
## Rules — the anti-slop card (`../_shared/phases/rules.md`)
|
|
156
|
+
|
|
157
|
+
`orc rules slice --lane orc-aftermath --json` is the ONLY assembler; never build
|
|
158
|
+
the card here. It rides under the house rules and above the task —
|
|
159
|
+
**house rules > your project's rules > ORC's own packs** — and its `line` prints
|
|
160
|
+
VERBATIM at preflight. Returns gain `rules_applied[]`, `rules_conflicts[]` (a gap,
|
|
161
|
+
never a silent choice) and `rules_overridden[]`.
|
|
155
162
|
## Waiting mid-run (`/orc-wait`)
|
|
156
163
|
|
|
157
164
|
Canonical: `../_shared/wait.md`. **`a lane that waits without a hand-back` has broken this contract.**
|
|
@@ -246,6 +246,13 @@ a failure**. A call the answer does not name is a call this lane does not make.
|
|
|
246
246
|
Exit ≠ 0 from the catalogue itself → say the CLI is unavailable and name the
|
|
247
247
|
command you are about to run, out loud, before running it.
|
|
248
248
|
|
|
249
|
+
## Rules — the anti-slop card (`../_shared/phases/rules.md`)
|
|
250
|
+
|
|
251
|
+
`orc rules slice --lane orc-analyze --json` is the ONLY assembler; never build
|
|
252
|
+
the card here. It rides under the house rules and above the task —
|
|
253
|
+
**house rules > your project's rules > ORC's own packs** — and its `line` prints
|
|
254
|
+
VERBATIM at preflight. Returns gain `rules_applied[]`, `rules_conflicts[]` (a gap,
|
|
255
|
+
never a silent choice) and `rules_overridden[]`.
|
|
249
256
|
## Waiting mid-run (`/orc-wait`)
|
|
250
257
|
|
|
251
258
|
Canonical: `../_shared/wait.md`. **`a lane that waits without a hand-back` has broken this contract.**
|
|
@@ -125,4 +125,12 @@ exit code, and never re-derive a state word — the CLI's state words are the on
|
|
|
125
125
|
state words, and **an exit code is an ANSWER wherever that contract says so, not
|
|
126
126
|
a failure**. A call the answer does not name is a call this lane does not make.
|
|
127
127
|
Exit ≠ 0 from the catalogue itself → say the CLI is unavailable and name the
|
|
128
|
-
command you are about to run, out loud, before running it.
|
|
128
|
+
command you are about to run, out loud, before running it.
|
|
129
|
+
|
|
130
|
+
## Rules — the anti-slop card (`../_shared/phases/rules.md`)
|
|
131
|
+
|
|
132
|
+
`orc rules slice --lane orc-analyze-mini --json` is the ONLY assembler; never build
|
|
133
|
+
the card here. It rides under the house rules and above the task —
|
|
134
|
+
**house rules > your project's rules > ORC's own packs** — and its `line` prints
|
|
135
|
+
VERBATIM at preflight. Returns gain `rules_applied[]`, `rules_conflicts[]` (a gap,
|
|
136
|
+
never a silent choice) and `rules_overridden[]`.
|
|
@@ -243,6 +243,13 @@ a failure**. A call the answer does not name is a call this lane does not make.
|
|
|
243
243
|
Exit ≠ 0 from the catalogue itself → say the CLI is unavailable and name the
|
|
244
244
|
command you are about to run, out loud, before running it.
|
|
245
245
|
|
|
246
|
+
## Rules — the anti-slop card (`../_shared/phases/rules.md`)
|
|
247
|
+
|
|
248
|
+
`orc rules slice --lane orc-boundary --json` is the ONLY assembler; never build
|
|
249
|
+
the card here. It rides under the house rules and above the task —
|
|
250
|
+
**house rules > your project's rules > ORC's own packs** — and its `line` prints
|
|
251
|
+
VERBATIM at preflight. Returns gain `rules_applied[]`, `rules_conflicts[]` (a gap,
|
|
252
|
+
never a silent choice) and `rules_overridden[]`.
|
|
246
253
|
## Waiting mid-run (`/orc-wait`)
|
|
247
254
|
|
|
248
255
|
Canonical: `../_shared/wait.md`. **`a lane that waits without a hand-back` has broken this contract.**
|
|
@@ -371,6 +371,13 @@ a failure**. A call the answer does not name is a call this lane does not make.
|
|
|
371
371
|
Exit ≠ 0 from the catalogue itself → say the CLI is unavailable and name the
|
|
372
372
|
command you are about to run, out loud, before running it.
|
|
373
373
|
|
|
374
|
+
## Rules — the anti-slop card (`../_shared/phases/rules.md`)
|
|
375
|
+
|
|
376
|
+
`orc rules slice --lane orc-brainstorm --json` is the ONLY assembler; never build
|
|
377
|
+
the card here. It rides under the house rules and above the task —
|
|
378
|
+
**house rules > your project's rules > ORC's own packs** — and its `line` prints
|
|
379
|
+
VERBATIM at preflight. Returns gain `rules_applied[]`, `rules_conflicts[]` (a gap,
|
|
380
|
+
never a silent choice) and `rules_overridden[]`.
|
|
374
381
|
## Waiting mid-run (`/orc-wait`)
|
|
375
382
|
|
|
376
383
|
Canonical: `../_shared/wait.md`. **`a lane that waits without a hand-back` has broken this contract.**
|
|
@@ -242,6 +242,13 @@ a failure**. A call the answer does not name is a call this lane does not make.
|
|
|
242
242
|
Exit ≠ 0 from the catalogue itself → say the CLI is unavailable and name the
|
|
243
243
|
command you are about to run, out loud, before running it.
|
|
244
244
|
|
|
245
|
+
## Rules — the anti-slop card (`../_shared/phases/rules.md`)
|
|
246
|
+
|
|
247
|
+
`orc rules slice --lane orc-budget --json` is the ONLY assembler; never build
|
|
248
|
+
the card here. It rides under the house rules and above the task —
|
|
249
|
+
**house rules > your project's rules > ORC's own packs** — and its `line` prints
|
|
250
|
+
VERBATIM at preflight. Returns gain `rules_applied[]`, `rules_conflicts[]` (a gap,
|
|
251
|
+
never a silent choice) and `rules_overridden[]`.
|
|
245
252
|
## Waiting mid-run (`/orc-wait`)
|
|
246
253
|
|
|
247
254
|
Canonical: `../_shared/wait.md`. **`a lane that waits without a hand-back` has broken this contract.**
|
|
@@ -292,6 +292,13 @@ a failure**. A call the answer does not name is a call this lane does not make.
|
|
|
292
292
|
Exit ≠ 0 from the catalogue itself → say the CLI is unavailable and name the
|
|
293
293
|
command you are about to run, out loud, before running it.
|
|
294
294
|
|
|
295
|
+
## Rules — the anti-slop card (`../_shared/phases/rules.md`)
|
|
296
|
+
|
|
297
|
+
`orc rules slice --lane orc-challenge --json` is the ONLY assembler; never build
|
|
298
|
+
the card here. It rides under the house rules and above the task —
|
|
299
|
+
**house rules > your project's rules > ORC's own packs** — and its `line` prints
|
|
300
|
+
VERBATIM at preflight. Returns gain `rules_applied[]`, `rules_conflicts[]` (a gap,
|
|
301
|
+
never a silent choice) and `rules_overridden[]`.
|
|
295
302
|
## Waiting mid-run (`/orc-wait`)
|
|
296
303
|
|
|
297
304
|
Canonical: `../_shared/wait.md`. **`a lane that waits without a hand-back` has broken this contract.**
|
|
@@ -215,6 +215,13 @@ a failure**. A call the answer does not name is a call this lane does not make.
|
|
|
215
215
|
Exit ≠ 0 from the catalogue itself → say the CLI is unavailable and name the
|
|
216
216
|
command you are about to run, out loud, before running it.
|
|
217
217
|
|
|
218
|
+
## Rules — the anti-slop card (`../_shared/phases/rules.md`)
|
|
219
|
+
|
|
220
|
+
`orc rules slice --lane orc-claude --json` is the ONLY assembler; never build
|
|
221
|
+
the card here. It rides under the house rules and above the task —
|
|
222
|
+
**house rules > your project's rules > ORC's own packs** — and its `line` prints
|
|
223
|
+
VERBATIM at preflight. Returns gain `rules_applied[]`, `rules_conflicts[]` (a gap,
|
|
224
|
+
never a silent choice) and `rules_overridden[]`.
|
|
218
225
|
## Waiting mid-run (`/orc-wait`)
|
|
219
226
|
|
|
220
227
|
Canonical: `../_shared/wait.md`. **`a lane that waits without a hand-back` has broken this contract.**
|
|
@@ -128,6 +128,13 @@ command you are about to run, out loud, before running it.
|
|
|
128
128
|
3. The fallback ask is ONE question with two outcomes (`/orc` or stop) —
|
|
129
129
|
never a menu, never a silent fallback.
|
|
130
130
|
|
|
131
|
+
## Rules — the anti-slop card (`../_shared/phases/rules.md`)
|
|
132
|
+
|
|
133
|
+
`orc rules slice --lane orc-diy --json` is the ONLY assembler; never build
|
|
134
|
+
the card here. It rides under the house rules and above the task —
|
|
135
|
+
**house rules > your project's rules > ORC's own packs** — and its `line` prints
|
|
136
|
+
VERBATIM at preflight. Returns gain `rules_applied[]`, `rules_conflicts[]` (a gap,
|
|
137
|
+
never a silent choice) and `rules_overridden[]`.
|
|
131
138
|
## Waiting mid-run (`/orc-wait`)
|
|
132
139
|
|
|
133
140
|
Canonical: `../_shared/wait.md`. **`a lane that waits without a hand-back` has broken this contract.**
|
|
@@ -64,6 +64,13 @@ say so and use `../_shared/config-precedence.md`'s documented defaults, out
|
|
|
64
64
|
loud. Nothing this lane reads is contested, gated or a stop, so it owes no
|
|
65
65
|
preflight line and has no gate to honour.
|
|
66
66
|
|
|
67
|
+
## Rules — the anti-slop card (`../_shared/phases/rules.md`)
|
|
68
|
+
|
|
69
|
+
`orc rules slice --lane orc-explain --json` is the ONLY assembler; never build
|
|
70
|
+
the card here. It rides under the house rules and above the task —
|
|
71
|
+
**house rules > your project's rules > ORC's own packs** — and its `line` prints
|
|
72
|
+
VERBATIM at preflight. Returns gain `rules_applied[]`, `rules_conflicts[]` (a gap,
|
|
73
|
+
never a silent choice) and `rules_overridden[]`.
|
|
67
74
|
## Calls
|
|
68
75
|
|
|
69
76
|
**ONE catalogue, and it is not you:** `orc lane calls orc-explain --json` names every
|