atris 3.15.13 → 3.15.22

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 (93) hide show
  1. package/AGENTS.md +84 -8
  2. package/README.md +5 -1
  3. package/atris/AGENTS.md +46 -1
  4. package/atris/CLAUDE.md +36 -1
  5. package/atris/GEMINI.md +14 -1
  6. package/atris/atris.md +12 -1
  7. package/atris/atrisDev.md +3 -2
  8. package/atris/context/README.md +11 -0
  9. package/atris/features/company-brain-sync/validate.md +5 -5
  10. package/atris/learnings.jsonl +1 -0
  11. package/atris/policies/atris-design.md +2 -0
  12. package/atris/skills/aeo/SKILL.md +2 -2
  13. package/atris/skills/atris/SKILL.md +15 -62
  14. package/atris/skills/design/SKILL.md +2 -0
  15. package/atris/skills/imessage/SKILL.md +19 -2
  16. package/atris/skills/loop/SKILL.md +6 -5
  17. package/atris/skills/magic-inbox/SKILL.md +1 -1
  18. package/atris/team/_template/MEMBER.md +23 -1
  19. package/atris/team/brainstormer/START_HERE.md +6 -0
  20. package/atris/team/executor/MEMBER.md +13 -0
  21. package/atris/team/executor/START_HERE.md +6 -0
  22. package/atris/team/launcher/START_HERE.md +6 -0
  23. package/atris/team/mission-lead/MEMBER.md +39 -0
  24. package/atris/team/mission-lead/MISSION.md +33 -0
  25. package/atris/team/mission-lead/START_HERE.md +6 -0
  26. package/atris/team/navigator/MEMBER.md +11 -0
  27. package/atris/team/navigator/START_HERE.md +6 -0
  28. package/atris/team/opus-overnight/MEMBER.md +39 -0
  29. package/atris/team/opus-overnight/MISSION.md +61 -0
  30. package/atris/team/opus-overnight/START_HERE.md +6 -0
  31. package/atris/team/opus-overnight/STEERING.md +35 -0
  32. package/atris/team/researcher/START_HERE.md +6 -0
  33. package/atris/team/validator/MEMBER.md +26 -6
  34. package/atris/team/validator/START_HERE.md +6 -0
  35. package/atris/wiki/concepts/agent-activation-contract.md +79 -0
  36. package/atris/wiki/concepts/workspace-initialization-contract.md +73 -0
  37. package/atris/wiki/index.md +27 -0
  38. package/atris/wiki/sources/atris-labs-2026-05-10.txt +17 -0
  39. package/atris/wiki/sources/atris-labs-goals-2026-05-10.txt +15 -0
  40. package/atris/wiki/sources/atrisos-generative-ui-product-surface-2026-05-10.txt +10 -0
  41. package/atris/wiki/sources/jack-dorsey-2026-05-10.txt +12 -0
  42. package/atris.md +49 -13
  43. package/bin/atris.js +660 -22
  44. package/commands/activate.js +12 -3
  45. package/commands/aeo.js +1 -1
  46. package/commands/align.js +10 -10
  47. package/commands/analytics.js +9 -4
  48. package/commands/app.js +2 -0
  49. package/commands/apps.js +276 -0
  50. package/commands/auth.js +1 -1
  51. package/commands/autopilot.js +74 -5
  52. package/commands/brain.js +536 -61
  53. package/commands/brainstorm.js +12 -12
  54. package/commands/business-sync.js +142 -24
  55. package/commands/clean.js +9 -6
  56. package/commands/codex-goal.js +311 -0
  57. package/commands/errors.js +11 -1
  58. package/commands/feedback.js +55 -17
  59. package/commands/fork.js +2 -2
  60. package/commands/gm.js +376 -0
  61. package/commands/init.js +80 -3
  62. package/commands/integrations.js +524 -0
  63. package/commands/learn.js +25 -16
  64. package/commands/lesson.js +41 -0
  65. package/commands/lifecycle.js +2 -2
  66. package/commands/member.js +2416 -9
  67. package/commands/mission.js +1776 -0
  68. package/commands/now.js +48 -7
  69. package/commands/play.js +425 -0
  70. package/commands/publish.js +2 -1
  71. package/commands/pull.js +72 -29
  72. package/commands/push.js +199 -17
  73. package/commands/review.js +51 -13
  74. package/commands/skill.js +2 -2
  75. package/commands/soul.js +19 -13
  76. package/commands/status.js +6 -1
  77. package/commands/sync.js +5 -4
  78. package/commands/task.js +1041 -147
  79. package/commands/terminal.js +5 -5
  80. package/commands/verify.js +7 -5
  81. package/commands/visualize.js +7 -0
  82. package/commands/wiki.js +53 -16
  83. package/commands/workflow.js +298 -54
  84. package/commands/workspace-clean.js +1 -1
  85. package/commands/worktree.js +468 -0
  86. package/commands/xp.js +1608 -0
  87. package/lib/manifest.js +34 -4
  88. package/lib/scorecard.js +3 -2
  89. package/lib/task-db.js +408 -27
  90. package/lib/todo-fallback.js +28 -2
  91. package/lib/todo.js +5 -3
  92. package/package.json +23 -2
  93. package/utils/update-check.js +51 -1
package/commands/skill.js CHANGED
@@ -593,7 +593,7 @@ function skillCreate(nameArg, ...flags) {
593
593
  console.error('Examples:');
594
594
  console.error(' atris skill create daily-standup');
595
595
  console.error(' atris skill create email-outreach --integration');
596
- console.error(' atris skill create pallet/bol-processor --integration');
596
+ console.error(' atris skill create example-co/bol-processor --integration');
597
597
  console.error(' atris skill create my-skill --local # project only, skip system dirs');
598
598
  process.exit(1);
599
599
  }
@@ -883,7 +883,7 @@ function skillCommand(subcommand, ...args) {
883
883
  console.log('Examples:');
884
884
  console.log(' atris skill create daily-standup');
885
885
  console.log(' atris skill create email-outreach --integration');
886
- console.log(' atris skill create pallet/bol-processor --integration');
886
+ console.log(' atris skill create example-co/bol-processor --integration');
887
887
  console.log(' atris skill link --all');
888
888
  console.log('');
889
889
  }
package/commands/soul.js CHANGED
@@ -132,7 +132,9 @@ function displaySoul(soul) {
132
132
  console.log(` │ ${'IDENTITY'.padEnd(W - 1)}│`);
133
133
  if (soul.identity['PERSONA.md']) {
134
134
  const preview = soul.identity['PERSONA.md'].split('\n').find(l => l.trim() && !l.startsWith('#')) || '';
135
- console.log(` │ persona: ${preview.slice(0, W - 15).padEnd(W - 14)}│`);
135
+ const max = W - 15;
136
+ const text = preview.length > max ? preview.slice(0, max - 1) + '…' : preview;
137
+ console.log(` │ persona: ${text.padEnd(W - 14)}│`);
136
138
  }
137
139
  if (soul.identity.team) {
138
140
  console.log(` │ team: ${soul.identity.team.length} members${' '.repeat(Math.max(0, W - 20 - String(soul.identity.team.length).length))}│`);
@@ -298,8 +300,24 @@ function distillSoul(atrisDir) {
298
300
 
299
301
  // ── Main ───────────────────────────────────────────────
300
302
 
303
+ function showSoulHelp() {
304
+ console.log('');
305
+ console.log(' atris soul — see what your project has learned');
306
+ console.log('');
307
+ console.log(' soul show identity, knowledge, learnings');
308
+ console.log(' soul snapshot export full soul to JSON (auto-gitignored)');
309
+ console.log(' soul distill compress lessons + policies into PERSONA.md');
310
+ console.log(' soul fork <path> copy persona + policies to another project');
311
+ console.log('');
312
+ }
313
+
301
314
  async function soul(args = []) {
302
315
  const subcommand = (args[0] || 'status').toLowerCase();
316
+ if (subcommand === 'help' || subcommand === '--help' || subcommand === '-h') {
317
+ showSoulHelp();
318
+ return;
319
+ }
320
+
303
321
  const atrisDir = findAtrisDir();
304
322
 
305
323
  if (!atrisDir) {
@@ -307,18 +325,6 @@ async function soul(args = []) {
307
325
  process.exit(1);
308
326
  }
309
327
 
310
- if (subcommand === 'help' || subcommand === '--help' || subcommand === '-h') {
311
- console.log('');
312
- console.log(' atris soul — see what your project has learned');
313
- console.log('');
314
- console.log(' soul show identity, knowledge, learnings');
315
- console.log(' soul snapshot export full soul to JSON (auto-gitignored)');
316
- console.log(' soul distill compress lessons + policies into PERSONA.md');
317
- console.log(' soul fork <path> copy persona + policies to another project');
318
- console.log('');
319
- return;
320
- }
321
-
322
328
  switch (subcommand) {
323
329
  case 'status':
324
330
  case 'st': {
@@ -189,7 +189,12 @@ function statusAtris(isQuick = false, jsonMode = false, verbose = false) {
189
189
  } else {
190
190
  where.push('No active endgame is set.');
191
191
  }
192
- where.push(`There are ${todo.inProgress.length} tasks in progress, ${todo.backlog.length} queued, and ${todo.completed.length} completed items still sitting in TODO.`);
192
+ const ipCount = todo.inProgress.length;
193
+ const bkCount = todo.backlog.length;
194
+ const cpCount = todo.completed.length;
195
+ const ipWord = ipCount === 1 ? 'task' : 'tasks';
196
+ const verb = ipCount === 1 ? 'is' : 'are';
197
+ where.push(`There ${verb} ${ipCount} ${ipWord} in progress, ${bkCount} queued, and ${cpCount} completed items still sitting in TODO.`);
193
198
 
194
199
  const queueParts = [];
195
200
  if (todo.inProgress[0]) {
package/commands/sync.js CHANGED
@@ -415,7 +415,7 @@ function syncAtris() {
415
415
  const claudeSkillFile = path.join(claudeSkillsDir, 'SKILL.md');
416
416
  const skillContent = `---
417
417
  name: atris
418
- description: Atris workspace navigation. Triggers on: atris, TODO, tasks, MAP.md, backlog, "where is X?"
418
+ description: Atris workspace navigation for atris repos, TODO files, tasks, MAP.md, backlog, and where-is-X questions.
419
419
  allowed-tools: Read, Bash, Glob, Grep, Write, Edit
420
420
  ---
421
421
 
@@ -440,7 +440,8 @@ Commands: plan → do → review
440
440
  Key behaviors:
441
441
  - Read PERSONA.md (3-4 sentences, ASCII visuals)
442
442
  - Check MAP.md for file:line refs
443
- - Update TODO.md (claim tasks, delete when done)`;
443
+ - Use \`atris task\` for claims, proof, ready, and accept
444
+ - Treat TODO.md as a rendered view; regenerate it instead of hand-editing tasks`;
444
445
 
445
446
  if (!fs.existsSync(claudeSkillsDir)) {
446
447
  fs.mkdirSync(claudeSkillsDir, { recursive: true });
@@ -773,7 +774,7 @@ function syncAtrisAll({ dryRun = false, force = false } = {}) {
773
774
  const plan = initialPlan;
774
775
 
775
776
  // Report.
776
- console.log(`Found ${projects.length} project(s).`);
777
+ console.log(`Found ${projects.length} ${projects.length === 1 ? 'project' : 'projects'}.`);
777
778
  console.log('');
778
779
  let wouldUpdate = 0, unchanged = 0, skipped = 0;
779
780
  for (const p of plan) {
@@ -788,7 +789,7 @@ function syncAtrisAll({ dryRun = false, force = false } = {}) {
788
789
  console.log(` · ${rel} (up to date)`);
789
790
  unchanged++;
790
791
  } else {
791
- console.log(` → ${rel} — ${p.changes.length} file(s): ${p.changes.join(', ')}`);
792
+ console.log(` → ${rel} — ${p.changes.length} ${p.changes.length === 1 ? 'file' : 'files'}: ${p.changes.join(', ')}`);
792
793
  wouldUpdate++;
793
794
  }
794
795
  }