atris 3.30.1 → 3.30.3

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 (67) hide show
  1. package/AGENTS.md +6 -0
  2. package/atris/AGENTS.md +11 -0
  3. package/atris/CLAUDE.md +5 -0
  4. package/atris/atris.md +19 -4
  5. package/atris/policies/atris-design.md +71 -0
  6. package/atris/policies/design-seed.md +187 -0
  7. package/atris/skills/atris/SKILL.md +26 -3
  8. package/atris/skills/design/SKILL.md +3 -2
  9. package/atris/skills/loop/SKILL.md +5 -3
  10. package/atris/team/_template/MEMBER.md +19 -0
  11. package/atris.md +63 -23
  12. package/ax +1434 -1698
  13. package/bin/atris.js +5 -1
  14. package/commands/agent-spawn.js +2 -2
  15. package/commands/brain.js +92 -7
  16. package/commands/brainstorm.js +62 -22
  17. package/commands/business-sync.js +92 -8
  18. package/commands/business.js +13 -7
  19. package/commands/chat-scan.js +102 -0
  20. package/commands/computer.js +758 -15
  21. package/commands/deck.js +505 -105
  22. package/commands/init.js +6 -1
  23. package/commands/launchpad.js +638 -0
  24. package/commands/log-sync.js +44 -13
  25. package/commands/loop-front.js +290 -0
  26. package/commands/member.js +124 -3
  27. package/commands/mission.js +717 -32
  28. package/commands/pull.js +37 -28
  29. package/commands/pulse.js +11 -8
  30. package/commands/run.js +79 -39
  31. package/commands/sync.js +36 -17
  32. package/commands/task.js +342 -66
  33. package/commands/xp.js +3 -0
  34. package/commands/youtube.js +221 -7
  35. package/decks/README.md +89 -0
  36. package/decks/archetype-catalog.json +180 -0
  37. package/decks/atris-antislop-pitch.json +48 -0
  38. package/decks/atris-archetypes-v2.json +83 -0
  39. package/decks/atris-one-loop-pitch.json +80 -0
  40. package/decks/atris-seed-pitch-v3.json +118 -0
  41. package/decks/atris-seed-pitch-v4-skeleton.json +106 -0
  42. package/decks/atris-seed-pitch-v5.json +109 -0
  43. package/decks/atris-seed-pitch-v6.json +137 -0
  44. package/decks/atris-seed-pitch-v7.json +133 -0
  45. package/decks/atris-single-shot-proof.json +74 -0
  46. package/decks/mark-pincus-narrative.json +102 -0
  47. package/decks/mark-pincus-sourcery.json +94 -0
  48. package/decks/yash-applied-compute-detailed.json +150 -0
  49. package/decks/yash-applied-compute-generalist.json +82 -0
  50. package/decks/yash-applied-compute-narrative.json +54 -0
  51. package/lib/ax-prefs.js +5 -12
  52. package/lib/chat-log-scan.js +377 -0
  53. package/lib/context-gatherer.js +35 -1
  54. package/lib/deck-compose.js +145 -0
  55. package/lib/deck-history.js +64 -0
  56. package/lib/deck-layout.js +169 -0
  57. package/lib/deck-review.js +431 -0
  58. package/lib/deck-schema.js +154 -0
  59. package/lib/file-ops.js +2 -2
  60. package/lib/functional-owner.js +189 -0
  61. package/lib/slides-deck.js +512 -58
  62. package/lib/task-db.js +109 -2
  63. package/package.json +2 -1
  64. package/templates/business-starter/team/START_HERE.md +12 -8
  65. package/utils/auth.js +4 -0
  66. package/utils/config.js +4 -0
  67. package/atris/atrisDev.md +0 -717
package/AGENTS.md CHANGED
@@ -61,6 +61,12 @@ Always-on agents should move proof-backed work to Review, complete their native
61
61
  goal, then continue the mission loop with the next goal. They must not run
62
62
  `atris task accept` or claim AgentXP unless a human approved the proof.
63
63
 
64
+ Codex agents with native goal tools should run `atris mission goal --json`
65
+ before choosing work. If the payload includes `goal.visible_goal`, mirror
66
+ `goal.objective` into the visible chat goal when the current goal is empty,
67
+ complete, or already matching; never complete unrelated active goals just to
68
+ make room.
69
+
64
70
  ## Workflow
65
71
 
66
72
  ```
package/atris/AGENTS.md CHANGED
@@ -14,6 +14,11 @@ task truth, proof, review, and backend/cloud sync all flow through Atris.
14
14
  4. Track work with `atris task`; use `atris/TODO.md` only as the rendered fallback view.
15
15
  5. Preferred loop: `atris plan` → `atris do` → `atris review`.
16
16
 
17
+ Task owners are functional or feature members, not engines. Use `task-planner`,
18
+ `architect`, `mission-lead`, `validator`, `launcher`, or a feature owner for
19
+ assignment; put coding agent models like Codex and Claude in the `executed_by`
20
+ section.
21
+
17
22
  ## Mission Autonomy
18
23
 
19
24
  Use `atris mission` when work should survive this chat or run as an autonomous loop.
@@ -51,6 +56,12 @@ Always-on agents should move proof-backed work to Review, complete their native
51
56
  goal, then continue the mission loop with the next goal. They must not run
52
57
  `atris task accept` or claim Career XP unless a human approved the proof.
53
58
 
59
+ Codex agents with native goal tools should run `atris mission goal --json`
60
+ before choosing work. If the payload includes `goal.visible_goal`, mirror
61
+ `goal.objective` into the visible chat goal when the current goal is empty,
62
+ complete, or already matching; never complete unrelated active goals just to
63
+ make room.
64
+
54
65
  Do not write new operating doctrine here first. Add it to Atris policy, skills,
55
66
  wiki, or `atris/atris.md`, then regenerate this adapter if needed.
56
67
 
package/atris/CLAUDE.md CHANGED
@@ -36,6 +36,11 @@ Atris is the source of truth. This file is only an adapter for Claude Code; do n
36
36
 
37
37
  Before edits, claim or create one small task with `atris task`, read `atris/MAP.md`, and write the goal/files/done/check contract into task dialogue. After edits, move proof-backed work to Review with `atris task ready <id> --proof "<commands or receipt>"`; chat-only proof does not count.
38
38
 
39
+ Task owners are functional or feature members, not engines. Use `task-planner`,
40
+ `architect`, `mission-lead`, `validator`, `launcher`, or a feature owner for
41
+ assignment; put coding agent models like Codex and Claude in the `executed_by`
42
+ section.
43
+
39
44
  Native goals and task approval are separate gates:
40
45
 
41
46
  ```text
package/atris/atris.md CHANGED
@@ -70,11 +70,11 @@ Core loop:
70
70
 
71
71
  ```bash
72
72
  atris task list
73
- atris task delegate "<title>" --to <owner> --tag <tag>
74
- atris task delegate "<title>" --to <owner> --via swarlo --tag <tag>
73
+ atris task delegate "<title>" --to <functional-member> --tag <tag>
74
+ atris task delegate "<title>" --to <functional-member> --executed-by <engine> --via swarlo --tag <tag>
75
75
  atris task day
76
76
  atris task next
77
- atris task claim <id> --as <agent>
77
+ atris task claim <id> --as <functional-member>
78
78
  atris task note <id> "<context, blocker, decision, or handoff>"
79
79
  atris task finish <id> --proof "<tests, screenshot, diff, or receipt>"
80
80
  atris task review <id> --lesson "<what improved>" --next "<next task>"
@@ -89,7 +89,7 @@ Every task record should carry:
89
89
 
90
90
  ```
91
91
  Title: <small work packet>
92
- Owner: <agent or unclaimed>
92
+ Owner: <functional or feature member, not an engine>
93
93
  Objective: <why this matters>
94
94
  Context: <links/files/decisions>
95
95
  Exit: <observable done condition>
@@ -97,6 +97,21 @@ Verify: <shell command or concrete proof>
97
97
  Next: <suggested follow-up task>
98
98
  ```
99
99
 
100
+ Task planning preview and landing:
101
+
102
+ ```
103
+ Owner: <functional-member>
104
+ Plan: <one sentence on the intended change>
105
+ Done: <observable result>
106
+ Check: <verifier, receipt, or artifact proof>
107
+ ```
108
+
109
+ Owner is accountable company role (`task-planner`, `architect`, `mission-lead`,
110
+ `validator`, `launcher`, or a feature owner). Coding agent models like Codex and
111
+ Claude are not task owners; put them in the `executed_by` section when useful.
112
+ If no existing member fits, create a member-creation task instead of assigning
113
+ broad work to an engine or generic executor.
114
+
100
115
  | Field | Meaning | Enforcement |
101
116
  |---|---|---|
102
117
  | tier | `agent` proceeds, `gray` queues for approval, `human` never attempted by you | guarded |
@@ -17,6 +17,32 @@ this is the "distribution center" — statistically average, aesthetically dead.
17
17
 
18
18
  ---
19
19
 
20
+ ## vocabulary is the lever
21
+
22
+ designers get better results from AI than engineers do. not because they're more creative — because they own the **language of craft**. an engineer says "make it look nice." a designer says "tighten the vertical rhythm, increase negative space, make the hierarchy bolder here and quieter there."
23
+
24
+ the model can only aim at the words you give it. **name the move you want, precisely, in craft vocabulary.** vague prompts produce vague output.
25
+
26
+ core terms to use when directing AI:
27
+ - **vertical rhythm** — spacing consistency down the page, locked to a baseline grid
28
+ - **negative space** — intentional emptiness as a design element, not absence
29
+ - **bolder / quieter** — relative emphasis, not absolute size
30
+ - **affordances** — visual cues that signal interaction (and now: agentic affordances for AI users)
31
+ - **meta-design** — designing the *system* of design, not just one screen
32
+ - **conviction** — committing to a global maximum instead of iterating toward a local one
33
+
34
+ ---
35
+
36
+ ## raising the floor vs raising the ceiling
37
+
38
+ AI is best used to **raise the floor** — automate the mechanical 80% (layout scaffolding, responsive grids, state matrices, boilerplate). this frees human attention for **raising the ceiling** — the last 10-20% that requires taste, instinct, and conviction.
39
+
40
+ don't use AI to make the final call. use it to clear the drudgery so you can spend your time on the part that matters: the unique spin, the unexpected choice, the thing a model would never pick on its own.
41
+
42
+ **cognitive delegation, not cognitive surrender.** AI routes you to the destination (like Google Maps). you keep the viewpoint and make the final decision. accepting an 8-page AI plan without reading it is cognitive surrender — that's how everything starts looking the same.
43
+
44
+ ---
45
+
20
46
  ## typography
21
47
 
22
48
  **avoid:** inter, roboto, open sans, lato, arial, montserrat, system defaults. also avoid monospace as lazy shorthand for "technical/developer" vibes.
@@ -342,9 +368,54 @@ the fingerprints of AI-generated work:
342
368
  - sparklines as decoration
343
369
  - rounded rectangles with drop shadows
344
370
  - large icons with rounded corners above headings
371
+ - **"claude beige"** — the generic off-white/off-gray background every AI site defaults to
372
+ - **instrument serif** overuse — the italicized serif headline that now signals "AI-generated" the way inter once did
373
+ - **generic tinted backgrounds** — flat color-tinted sections with no texture, depth, or intention
345
374
 
346
375
  a distinctive interface should make someone ask "how was this made?" not "which AI made this?"
347
376
 
377
+ ### anti-attractors
378
+
379
+ models have attractor states — defaults they fall into because training data is weighted toward them. purple gradients, instrument serif, "claude beige" — these are gravity wells. to escape them you need **anti-attractors**: deliberate constraints that force the model off its well-trodden path.
380
+
381
+ techniques:
382
+ - **name the thing you don't want** — "no purple, no serif headline, no off-white background" closes the attractor
383
+ - **seed with a reference** — point at a specific site, era, or designer's work as the target aesthetic
384
+ - **inject a constraint** — "monochrome only," "no rounded corners," "one font weight" — scarcity forces creativity
385
+ - **rotate your defaults** — if your last three projects used dark mode, force light. if they used sans, force serif. the convergence trap is real.
386
+
387
+ ---
388
+
389
+ ## ax — agentic experience
390
+
391
+ UX is design for humans. **AX is design for AI agents** that are becoming primary users of software. when an agent interacts with your CLI, API, or surface, visual affordances don't help — it can't see your button. what it needs:
392
+
393
+ - **speed** — fast responses, low latency, no unnecessary round trips
394
+ - **clarity** — unambiguous output, structured data, predictable shapes
395
+ - **verbosity where needed** — error messages that tell the agent what to do next, not just what failed
396
+ - **edge case coverage** — agents will hit paths humans never touch; handle them explicitly
397
+ - **agentic affordances** — `llms.txt`, `robots.txt`, clear `--help`, machine-readable status, stable exit codes
398
+
399
+ AX is not optional anymore. if your tool is agent-facing, design the agent's experience as deliberately as the human's.
400
+
401
+ ---
402
+
403
+ ## conviction over local maxima
404
+
405
+ good design is a bet. iterating toward "slightly better" produces a **local maximum** — safe, defensible, forgettable. great design requires **conviction**: choosing a global maximum that might look wrong at first but is a superior endpoint.
406
+
407
+ the engineer's instinct is to optimize incrementally. the designer's job is to make a bet and commit. AI accelerates iteration, which makes the local-maximum trap *worse* — you can now converge on average faster than ever.
408
+
409
+ **subtraction over addition.** the strongest design move is often removing something. steve jobs as editor, not steve jobs as builder. when a screen feels cluttered, don't add structure — delete until it breathes.
410
+
411
+ ---
412
+
413
+ ## the scarcity principle
414
+
415
+ taste emerges from constraints. the european and japanese craft traditions produced distinctive work because materials were scarce — you had to choose carefully. in an era of infinite digital materials (every color, every font, every layout is free), taste must be **intentionally cultivated through self-imposed scarcity**.
416
+
417
+ pick constraints before you start: one font, two colors, three spacing values. scarcity forces decisions. infinite options produce the distribution center.
418
+
348
419
  ---
349
420
 
350
421
  ## references
@@ -0,0 +1,187 @@
1
+ # design-seed.md — atris visual identity
2
+
3
+ > Generated from a design interview on 2026-06-23.
4
+ > This is the project's unique design DNA. Not a template — a conviction.
5
+ > Every design decision for Atris surfaces should reference this seed.
6
+
7
+ ---
8
+
9
+ ## the interview (source signal)
10
+
11
+ | question | answer |
12
+ |----------|--------|
13
+ | audience | designers, product enthusiasts, apple lovers, artsy people |
14
+ | anti-attractor | AI startup slop — purple gradients, claude beige, instrument serif |
15
+ | personality | warm-technical — sharp but human, approachable craft |
16
+ | color mood | warm earth — clay, bone, ink, ochre |
17
+
18
+ **the move:** this is not a dev tool that needs to look "technical." this is a crafted object that happens to be powerful. the bar is set by people who notice the kerning on a restaurant menu.
19
+
20
+ ---
21
+
22
+ ## typography
23
+
24
+ **display: Spectral**
25
+ - warm serif designed for screens (Production Type)
26
+ - intellectual without being precious
27
+ - has optical sizing — gets more expressive at large sizes
28
+ - NOT instrument serif (the AI tell), NOT Fraunces (getting there), NOT Playfair (overused)
29
+ - weights: 200 (light, for quiet headlines) and 700 (for bold statements)
30
+ - italic available — use sparingly, for emphasis only
31
+
32
+ **body: Hanken Grotesk**
33
+ - humanist sans with warmth and character
34
+ - not inter, not roboto, not system — has a hand to it
35
+ - weights: 400 (body), 600 (emphasis)
36
+ - slightly more readable than geometric sans at small sizes
37
+
38
+ **mono: JetBrains Mono**
39
+ - for code, CLI output, technical labels only
40
+ - never as a "developer vibe" design choice
41
+
42
+ **type scale (fluid):**
43
+ ```css
44
+ --font-display: 'Spectral', Georgia, serif;
45
+ --font-body: 'Hanken Grotesk', system-ui, sans-serif;
46
+ --font-mono: 'JetBrains Mono', monospace;
47
+
48
+ --text-xs: 0.75rem;
49
+ --text-sm: 0.875rem;
50
+ --text-base: 1rem;
51
+ --text-lg: clamp(1.25rem, 1rem + 1vw, 1.5rem);
52
+ --text-xl: clamp(1.75rem, 1rem + 3vw, 2.5rem);
53
+ --text-display: clamp(2.5rem, 1rem + 6vw, 5rem);
54
+ ```
55
+
56
+ **rules:**
57
+ - display font for headlines only. body stays in Hanken.
58
+ - weight extremes: 200 vs 700, never 400 vs 500.
59
+ - size jumps are dramatic (3x), not timid.
60
+ - line-height: 1.6 for body (generous, warm). 1.1 for display (tight, confident).
61
+ - max-width: 62ch for long-form. let it breathe.
62
+
63
+ ---
64
+
65
+ ## color
66
+
67
+ warm earth palette. everything tinted warm. no pure gray, no pure black, no pure white.
68
+
69
+ ```css
70
+ :root {
71
+ /* surfaces */
72
+ --bone: oklch(96% 0.012 75); /* warm paper — the base */
73
+ --bone-2: oklch(93% 0.014 72); /* slightly deeper, for sections */
74
+ --ink: oklch(22% 0.015 55); /* warm near-black — primary text */
75
+ --ink-soft: oklch(35% 0.012 55); /* secondary text, still warm */
76
+ --ink-faint:oklch(55% 0.010 60); /* tertiary, metadata */
77
+
78
+ /* accents — used rarely, earn their place */
79
+ --clay: oklch(58% 0.13 45); /* terracotta — the sharp accent */
80
+ --ochre: oklch(72% 0.09 75); /* warm gold — for highlights */
81
+ --moss: oklch(42% 0.04 145); /* deep muted green — secondary accent */
82
+
83
+ /* depth */
84
+ --shadow: oklch(15% 0.01 55); /* deepest warm dark */
85
+ --line: oklch(88% 0.010 70); /* warm hairline borders */
86
+ }
87
+ ```
88
+
89
+ **usage rules:**
90
+ - `--bone` is the default background. never `#fff`. never `#f5f5f5`.
91
+ - `--ink` is the default text. never `#000`. never `#1a1a1a`.
92
+ - `--clay` is the one sharp accent. use it for one thing per view — a link, a CTA, a key number. if you use it for three things, it's not an accent anymore.
93
+ - `--ochre` for subtle highlights (selection, hover warmth). never for text.
94
+ - `--moss` appears rarely — maybe a status indicator, a secondary chart. it's the surprise.
95
+ - never put `--ink-faint` text on `--clay` backgrounds. use `--bone` on `--clay`.
96
+ - dark mode: invert to warm dark (`oklch(18% 0.015 55)` background, `--bone` text). never zinc, never pure dark.
97
+
98
+ ---
99
+
100
+ ## spacing
101
+
102
+ warm-technical means generous but not wasteful. more space than feels comfortable, then a little more.
103
+
104
+ ```css
105
+ --space-xs: 0.5rem;
106
+ --space-sm: 1rem;
107
+ --space-md: 2rem;
108
+ --space-lg: 4rem;
109
+ --space-xl: 8rem; /* section gaps — dramatic */
110
+ --space-2xl: 12rem; /* used sparingly, for major breaks */
111
+ ```
112
+
113
+ **rhythm:** vertical spacing locked to `--space-md` (2rem) as the base unit. section gaps are `--space-xl` (8rem). this creates a 1:4 ratio between content rhythm and section breaks — you feel the structure without seeing it.
114
+
115
+ ---
116
+
117
+ ## layout
118
+
119
+ **editorial, not templated.**
120
+
121
+ - no hero + 3 cards + footer. ever.
122
+ - asymmetric layouts. left-aligned with intentional negative space on the right.
123
+ - wide margins (clamp(1.5rem, 8vw, 8rem)) — content sits in the center 60-70% of the viewport.
124
+ - sections separated by `--space-xl` (8rem) of pure `--bone`. the space IS the design.
125
+ - no cards unless content genuinely needs a container. most things sit directly on `--bone`.
126
+ - if you must group, use `--bone-2` (slightly deeper) with no border, or a single `--line` hairline.
127
+
128
+ **the page should feel like a well-set book page, not a dashboard.**
129
+
130
+ ---
131
+
132
+ ## motion
133
+
134
+ warm-technical = things take their time, but nothing wastes it.
135
+
136
+ ```css
137
+ --ease: cubic-bezier(0.25, 1, 0.5, 1); /* exponential ease-out */
138
+ --dur-fast: 200ms;
139
+ --dur-base: 350ms; /* slightly slower than default — warm */
140
+ --dur-slow: 600ms; /* for page reveals */
141
+ ```
142
+
143
+ - one reveal animation on page load: staggered fade-up, 80ms between elements, `--dur-slow`.
144
+ - hover: subtle warm brighten (filter: brightness(1.05)) + scale 1.02. never shift, never hide.
145
+ - no cursor effects. no meteor showers. no parallax.
146
+ - `prefers-reduced-motion`: everything instant. the static version must be beautiful on its own.
147
+
148
+ ---
149
+
150
+ ## the anti-attractor lock
151
+
152
+ these are banned for Atris surfaces, derived from the interview:
153
+
154
+ | banned | why |
155
+ |--------|-----|
156
+ | purple-to-blue gradients | AI slop fingerprint #1 |
157
+ | off-white / `#fafafa` backgrounds | "claude beige" — the new AI default |
158
+ | instrument serif (italic) | the new AI tell — everyone uses it |
159
+ | inter / roboto / system fonts | statistically average, aesthetically dead |
160
+ | glassmorphism | decorative blur = no point of view |
161
+ | dark mode with neon accents | "cool" without a design decision |
162
+ | hero + 3 cards + footer | the template. every AI does this. |
163
+ | gradient text on headlines | looks impressive, means nothing |
164
+ | rounded-rect with drop shadow | safe, forgettable, templated |
165
+ | all-caps tracked labels | keshav hates it. not warm. |
166
+
167
+ ---
168
+
169
+ ## the conviction
170
+
171
+ this design says: **we care about the thing you're looking at, not the fact that we made it.**
172
+
173
+ it's warm paper, warm ink, one sharp terracotta accent, a serif that has opinions, and enough negative space that you notice the content. it doesn't shout. it doesn't perform. it's made well, and you can feel that before you can name it.
174
+
175
+ if a designer looks at this and thinks "AI made this," we failed.
176
+ if they think "someone made this," we're on track.
177
+ if they think "who made this?" — that's the goal.
178
+
179
+ ---
180
+
181
+ ## references (inspiration, not copies)
182
+
183
+ - Aesop.com — warm earth, editorial, restraint
184
+ - Apple product pages — typography confidence, negative space
185
+ - Linear changelog — warm-technical writing in a UI
186
+ - Istituto Marangoni — editorial layout, Italian craft
187
+ - a well-printed paperback — the feeling we're chasing
@@ -31,12 +31,35 @@ Key behaviors:
31
31
  - Read PERSONA.md (3-4 sentences, ASCII visuals)
32
32
  - Check MAP.md for file:line refs
33
33
  - Use `atris task` for claims, proof, ready, and accept
34
+ - Use functional/feature members as task owners; record engines only as `executed_by`
34
35
  - Treat TODO.md as a rendered view; regenerate it instead of hand-editing tasks
36
+ - In Codex runtimes with native goal tools, mirror `atris mission goal --json` into the visible chat goal via `goal.visible_goal`
37
+
38
+ ## Visible Chat Goal Mirror
39
+
40
+ Before choosing work in an Atris repo, run:
41
+
42
+ ```bash
43
+ atris mission goal --json
44
+ ```
45
+
46
+ If it returns `action: codex_goal_candidate` or `codex_goal_heartbeat` with
47
+ `goal.visible_goal`, treat that as the desired native chat goal:
48
+
49
+ 1. Call `get_goal` when the runtime exposes it.
50
+ 2. If the active goal already equals `goal.objective`, keep working.
51
+ 3. If there is no active goal or the prior goal is complete, call `create_goal` with `goal.objective`.
52
+ 4. If a different active goal is still in progress, do not complete it just to make room; report that `goal.visible_goal.status` is waiting for the visible goal slot.
53
+ 5. After proof is ready, call `update_goal({ status: "complete" })`, rerun `atris mission goal --json`, then create the next visible goal candidate when a slot is available.
54
+
55
+ Native goal completion is not task acceptance. Agents may complete their native
56
+ goal after proof is ready; only a human should run `atris task accept`.
35
57
 
36
58
  ## Steps
37
59
 
38
60
  1. Run `atris atris.md` on first interaction to show workspace status
39
61
  2. Read `atris/MAP.md` before any file search to find file:line refs
40
- 3. Run `atris task list` or `atris task next` to find current work
41
- 4. Claim tasks with `atris task claim <id> --as <agent>`
42
- 5. Move completed work to review with `atris task ready <id> --proof "..."`
62
+ 3. Run `atris mission goal --json` and mirror `goal.visible_goal` into the native chat goal when the runtime supports it
63
+ 4. Run `atris task list` or `atris task next` to find current work
64
+ 5. Claim tasks with `atris task claim <id> --as <functional-member>`
65
+ 6. Move completed work to review with `atris task ready <id> --proof "..."`
@@ -16,8 +16,9 @@ Part of the Atris policy system. Prevents ai-generated frontend from looking gen
16
16
 
17
17
  This skill uses the Atris workflow:
18
18
  1. Check `atris/MAP.md` for existing patterns before building
19
- 2. Reference `atris/policies/atris-design.md` for full guidance
20
- 3. After building, run `atris review` to validate against this policy
19
+ 2. **Read `atris/policies/design-seed.md` first** it has the project's unique visual identity (fonts, colors, spacing, motion). This is the design DNA. Do not override it with defaults.
20
+ 3. Reference `atris/policies/atris-design.md` for full anti-slop guidance
21
+ 4. After building, run `atris review` to validate against this policy
21
22
 
22
23
  ## Quick Reference
23
24
 
@@ -30,7 +30,7 @@ The agent then:
30
30
  - `cron`: `"*/13 * * * *"` (every 13 min) for tight loops, or `"7 * * * *"` (hourly at :07) for slow loops
31
31
  - `prompt`: `"First run: atris mission run --due --max-ticks 1 --complete-on-pass. If it reports no_due_mission, run /autopilot for one tick. One bounded goal only, then stop. Do not start a conversation."`
32
32
  - `recurring`: `true`
33
- - `durable`: `false` (in-memory only gone when this Claude session ends)
33
+ - `durable`: `false` (in-memory only, gone when this Claude session ends)
34
34
  2. After creating, calls `CronList` and shows the user the active cron jobs.
35
35
  3. Tells the user: "loop is alive. job id <X>. fires roughly every <N> minutes. say 'stop the loop' to kill it. auto-expires after 7 days."
36
36
 
@@ -68,6 +68,8 @@ If the user says "kill all loops", call `CronList`, then `CronDelete` for every
68
68
 
69
69
  This is the autonomous mode. Without `/loop`, `/autopilot` only runs when a human invokes it.
70
70
 
71
- ## Wiki upkeep is a separate concern
71
+ ## The CLI front door and wiki upkeep
72
72
 
73
- The CLI command `atris loop` is wiki upkeep (stale pages, orphans, ingest candidates). That's a different verb on the same name. If the user wants wiki health, run `atris loop` from a terminal. If they want the autopilot heartbeat, invoke `/loop` here in Claude Code.
73
+ The CLI command `atris loop` is now the single front door to the self-improvement loop: `atris loop start` (local), `atris loop start --overnight` (durable heartbeat), `atris loop status`, `atris loop stop`. It delegates to the existing engines (`run`, `pulse`) rather than adding a new one.
74
+
75
+ Wiki upkeep (stale pages, orphans, ingest candidates) moved to `atris loop wiki` (or `atris wiki loop`). If the user wants wiki health, run that. If they want the autopilot heartbeat from inside Claude Code, invoke `/loop` here.
@@ -8,6 +8,9 @@ skills: []
8
8
 
9
9
  permissions:
10
10
  can-read: true
11
+ can-execute: true
12
+ can-approve: false
13
+ can-accept-task: false
11
14
  approval-required: []
12
15
 
13
16
  tools: []
@@ -21,6 +24,16 @@ Replace with the long-term mission this member owns.
21
24
 
22
25
  Replace with what this member may and may not touch.
23
26
 
27
+ ## Cadence
28
+
29
+ Replace with how often this member may wake up, how long one tick may run, and the lease timeout.
30
+
31
+ ## Ownership Contract
32
+
33
+ - Own tasks by function or feature, never by execution engine.
34
+ - If no existing member fits, create a member-creation task before assigning broad work.
35
+ - Put coding agent models like Codex and Claude in the `executed_by` section.
36
+
24
37
  ## Proof Standard
25
38
 
26
39
  Replace with what proves good work.
@@ -29,6 +42,12 @@ Replace with what proves good work.
29
42
 
30
43
  Replace with when this member must stop and ask.
31
44
 
45
+ ## Cleanup Contract
46
+
47
+ - Use isolated worktrees for parallel work.
48
+ - Ship or archive the worktree before the lease ends.
49
+ - Move proof-backed work to Review; never run human accept.
50
+
32
51
  ## Log System
33
52
 
34
53
  Every member keeps a dated log under `logs/YYYY-MM-DD.md`.
package/atris.md CHANGED
@@ -10,9 +10,10 @@ leave a trail another agent or human can trust.
10
10
  On session start, before responding:
11
11
 
12
12
  1. Read:
13
- - `atris/logs/YYYY/YYYY-MM-DD.md` today's journal
14
- - `atris/MAP.md` navigation
15
- - `atris/wiki/STATUS.md` if present current memory snapshot
13
+ - `atris/logs/YYYY/YYYY-MM-DD.md`: today's journal
14
+ - `atris/MAP.md`: navigation
15
+ - `atris/CLARITY.md` if present: how the operator works (voice, cadence, leash); prompt yourself to match it
16
+ - `atris/wiki/STATUS.md` if present: current memory snapshot
16
17
 
17
18
  2. Show this box, then ask what to work on if no task was already given.
18
19
 
@@ -50,13 +51,36 @@ Then:
50
51
  - do not call something complete without verification
51
52
  - do not take irreversible actions without approval from the human
52
53
  - do not hide state outside markdown, logs, diffs, or the journal
53
- - do not edit the rules that judge you the reward config, the authority policy, or this file
54
+ - do not edit the rules that judge you: the reward config, the authority policy, or this file
54
55
 
55
56
  If you cannot honor these rules, stop, write why in the journal, and ask the human before continuing.
56
57
 
57
58
  Labels used below:
58
- - `guarded` checked by code or a pre-commit hook; bypassing is a bug
59
- - `expected` convention; honor it or stop
59
+ - `guarded`: checked by code or a pre-commit hook; bypassing is a bug
60
+ - `expected`: convention; honor it or stop
61
+
62
+ ## taste
63
+
64
+ What you ship should not read as generated. The test: if someone said "an AI made this," would they believe it instantly? If yes, that is the bug. The model has no words for restraint and it falls into gravity wells. Beat both.
65
+
66
+ - **Gate it.** `atris slop detect <path>` is deterministic: no model, exit 1 on a tell, built for CI and the review stage. A finding is a fact (file:line + rule), not an opinion. `guarded` once wired into review.
67
+ - **Name the move.** Vague prompts make vague output. Direct with craft words: vertical rhythm, negative space, hierarchy, contrast, bolder here / quieter there, restraint. Precise language is the lever. Own it.
68
+ - **Refuse the wells** (named so you can): purple/indigo gradients, gradient-filled text, glassmorphism, Inter/Roboto defaults, claude-beige, neon-on-dark, hero-metric rows, identical card grids, eyebrow/tracked-caps labels, pulsing live-dots, em dashes.
69
+ - **Commit to constraints.** One distinctive font, one accent hue, a small spacing scale. Taste is subtraction, not addition.
70
+ - **Generate it right.** `atris deck` (slides) and the `design` policy apply the system by default: own backgrounds and fonts, never the tool's stock template.
71
+ - **Compound it.** A new tell becomes a typed lesson with a `detector:` regex, so the gate grows instead of leaning on memory. Taste lives in code, not vibes.
72
+
73
+ ## voice
74
+
75
+ The same discipline for words. Output stays sharp no matter how bloated the context. A full context is not license to ramble.
76
+
77
+ - **Lead with the move.** Answer first, support after. No preamble, no agreement reflex ("great question", "you're absolutely right").
78
+ - **Specific over buzzy.** Name the exact thing. If you can't, you don't understand it yet; go look, don't hedge.
79
+ - **Cut filler.** Drop "it's worth noting", "in order to", "leverage", "seamless", "robust", "delve", stacked hedges, and em dashes. `atris slop` flags the prose tells (em-dash, hype-copy) too.
80
+ - **Bound verbosity by information, not context.** Say the load-bearing thing and stop. Length tracks what the reader needs to act, nothing more.
81
+ - **Match the register.** The operator wants the next move; a spec wants the contract; a journal wants one line. Jargon is a lever only when shared: use the reader's precise terms, define a new one once.
82
+
83
+ `expected`: this is how an Atris agent writes and builds. Shipping slop or rambling is a failure smell, same as drift or a stale task.
60
84
 
61
85
  ## task source of truth
62
86
 
@@ -70,11 +94,11 @@ Core loop:
70
94
 
71
95
  ```bash
72
96
  atris task list
73
- atris task delegate "<title>" --to <owner> --tag <tag>
74
- atris task delegate "<title>" --to <owner> --via swarlo --tag <tag>
97
+ atris task delegate "<title>" --to <functional-member> --tag <tag>
98
+ atris task delegate "<title>" --to <functional-member> --executed-by <engine> --via swarlo --tag <tag>
75
99
  atris task day
76
100
  atris task next
77
- atris task claim <id> --as <agent>
101
+ atris task claim <id> --as <functional-member>
78
102
  atris task note <id> "<context, blocker, decision, or handoff>"
79
103
  atris task finish <id> --proof "<tests, screenshot, diff, or receipt>"
80
104
  atris task review <id> --lesson "<what improved>" --next "<next task>"
@@ -89,7 +113,7 @@ Every task record should carry:
89
113
 
90
114
  ```
91
115
  Title: <small work packet>
92
- Owner: <agent or unclaimed>
116
+ Owner: <functional or feature member, not an engine>
93
117
  Objective: <why this matters>
94
118
  Context: <links/files/decisions>
95
119
  Exit: <observable done condition>
@@ -97,6 +121,21 @@ Verify: <shell command or concrete proof>
97
121
  Next: <suggested follow-up task>
98
122
  ```
99
123
 
124
+ Task planning preview and landing:
125
+
126
+ ```
127
+ Owner: <functional-member>
128
+ Plan: <one sentence on the intended change>
129
+ Done: <observable result>
130
+ Check: <verifier, receipt, or artifact proof>
131
+ ```
132
+
133
+ Owner is accountable company role (`task-planner`, `architect`, `mission-lead`,
134
+ `validator`, `launcher`, or a feature owner). Coding agent models like Codex and
135
+ Claude are not task owners; put them in the `executed_by` section when useful.
136
+ If no existing member fits, create a member-creation task instead of assigning
137
+ broad work to an engine or generic executor.
138
+
100
139
  | Field | Meaning | Enforcement |
101
140
  |---|---|---|
102
141
  | tier | `agent` proceeds, `gray` queues for approval, `human` never attempted by you | guarded |
@@ -121,10 +160,10 @@ The human is the constructor. You multiply. Handoff fidelity lives in the files,
121
160
 
122
161
  Move one task at a time through plan → do → review.
123
162
 
124
- - **plan** read relevant files, produce an ASCII visualization, wait for approval. No code.
125
- - **plan-review** the validator reads the plan fresh and signs off with `SIGNOFF:` or halts with `REJECT:` + `FIX:` + an optional `PROPOSED:` block (concrete draft of Files / Exit / Verify / Rollback to replace). Plan does not move to do without signoff. The validator is a drafting partner, not just a critic on REJECT it proposes the sharper rubric rather than leaving the human to guess. Codex is optional escalation when `ATRIS_USE_CODEX=1` or the task carries `[codex]`.
126
- - **do** claim the task with `atris task claim <id> --as <agent>`, execute step by step, add notes as reality changes, update `MAP.md` and the journal when needed.
127
- - **review** run the task's verification, read the diff, run the relevant tests, finish with `atris task finish <id> --proof "..."`, and add the lesson/next task with `atris task review`.
163
+ - **plan**: read relevant files, produce an ASCII visualization, wait for approval. No code.
164
+ - **plan-review**: the validator reads the plan fresh and signs off with `SIGNOFF:` or halts with `REJECT:` + `FIX:` + an optional `PROPOSED:` block (concrete draft of Files / Exit / Verify / Rollback to replace). Plan does not move to do without signoff. The validator is a drafting partner, not just a critic: on REJECT it proposes the sharper rubric rather than leaving the human to guess. Codex is optional escalation when `ATRIS_USE_CODEX=1` or the task carries `[codex]`.
165
+ - **do**: claim the task with `atris task claim <id> --as <agent>`, execute step by step, add notes as reality changes, update `MAP.md` and the journal when needed.
166
+ - **review**: run the task's verification, read the diff, run the relevant tests, finish with `atris task finish <id> --proof "..."`, and add the lesson/next task with `atris task review`.
128
167
 
129
168
  Every stage runs the Confidence Gate before it advances:
130
169
 
@@ -177,7 +216,7 @@ Periodically, and before closing an endgame, clean:
177
216
  - **I1:** Description
178
217
 
179
218
  ## Notes
180
- [timestamped lines one per discovery, decision, or tick]
219
+ [timestamped lines: one per discovery, decision, or tick]
181
220
  ```
182
221
 
183
222
  Context is a cache. Disk is truth. Route discoveries as they happen:
@@ -195,12 +234,13 @@ Do not batch. Nothing important should live only in memory.
195
234
 
196
235
  ## failure smells
197
236
 
198
- If you notice these, stop and flag do not continue:
199
- - **loop** the same suggestion fires tick after tick, nothing changes on disk
200
- - **drift** `MAP.md` file:line refs no longer match the code
201
- - **stale task** a backlog task references a file or symbol that no longer exists
202
- - **hidden side effect** an action changed external state (email sent, money moved, deploy) without a queued approval
203
- - **unverifiable completion** a task marked complete without a `Verify:` command that actually ran
237
+ If you notice these, stop and flag, do not continue:
238
+ - **loop**: the same suggestion fires tick after tick, nothing changes on disk
239
+ - **drift**: `MAP.md` file:line refs no longer match the code
240
+ - **stale task**: a backlog task references a file or symbol that no longer exists
241
+ - **hidden side effect**: an action changed external state (email sent, money moved, deploy) without a queued approval
242
+ - **unverifiable completion**: a task marked complete without a `Verify:` command that actually ran
243
+ - **slop**: output reads as generated: gradient text, purple gradients, em dashes, hype copy, eyebrow caps, or rambling filler. `atris slop detect` names it; fix it before shipping (see `## taste` and `## voice`)
204
244
 
205
245
  Each has real examples in `lessons.md`. Before nontrivial execution, read the relevant recent lessons.
206
246
 
@@ -217,10 +257,10 @@ Pages that summarize or reference other files declare their sources in YAML fron
217
257
 
218
258
  If any source was modified after `last_compiled`, the page is stale. Re-read the sources, update the page, bump `last_compiled`.
219
259
 
220
- Compounding: when you answer a question that required synthesis across pages, file the answer back as a new page or into an existing one. Explorations accumulate.
260
+ Compounding: when you answer a question that required synthesis across pages, file the answer back: as a new page or into an existing one. Explorations accumulate.
221
261
 
222
262
  Linting during review catches stale pages, orphans, contradictions, and concepts mentioned but missing their own page.
223
263
 
224
264
  ---
225
265
 
226
- *Canonical copy: workspace root `atris.md`. Project copies are distributed; `atris update` syncs them. Full spec: `atrisDev.md`.*
266
+ *Canonical copy: workspace root `atris.md`. Project copies are distributed; `atris update` syncs them.*