atris 2.0.3 → 2.0.5

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.
@@ -43,7 +43,7 @@ The agent will:
43
43
  4. Execute step by step
44
44
  5. Review and update docs (2-pass validation)
45
45
 
46
- šŸ’” Tip: Use `atris brainstorm` if you're exploring options. Use `atris plan` when ready to build.
46
+ Tip: Use `atris brainstorm` if you're exploring options. Use `atris plan` when ready to build.
47
47
 
48
48
  **Total time: Start building immediately**
49
49
 
@@ -71,6 +71,7 @@ Feature complete. Ready for review? (y/n)
71
71
  3. **Check MAP.md** — Verify file paths exist, update if structure changed
72
72
  4. **Run tests after changes** — Catch issues immediately
73
73
  5. **No shortcuts** — Follow the build.md steps exactly
74
+ 6. **Anti-slop aware** — Read `atris/policies/ANTISLOP.md` before writing. No sparkles, no filler, no purple prose.
74
75
 
75
76
  ---
76
77
 
@@ -26,12 +26,15 @@ After executor finishes:
26
26
  ā”œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”¤
27
27
  │ āœ“ Matches build.md spec │
28
28
  │ āœ“ All tests pass │
29
- │ āœ“ No breaking changes │
29
+ │ āœ“ No breaking changes │
30
30
  │ āœ“ MAP.md updated (if needed) │
31
31
  │ āœ“ Error handling present │
32
+ │ āœ“ Anti-slop check (see below) │
32
33
  ā””ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”˜
33
34
  ```
34
35
 
36
+ **Anti-slop gate:** Run `atris/policies/ANTISLOP.md` checklist on all output. Block if violations.
37
+
35
38
  **Final ASCII:**
36
39
  ```
37
40
  ā”Œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”
package/atris/atris.md CHANGED
@@ -434,7 +434,7 @@ After MAP.md generation, agents receive project context injection (framework, ke
434
434
  - **C1:** Fixed bidirectional journal sync
435
435
  - Problem: Web edits didn't sync to CLI
436
436
  - Solution: Added auto-pull when web is newer + local unchanged
437
- - Impact: Users can edit on web (mobile) and sync seamlessly
437
+ - Impact: Users can edit on web (mobile) and changes sync automatically
438
438
 
439
439
  ## In Progress šŸ”„
440
440
 
@@ -0,0 +1,66 @@
1
+ # ANTISLOP.md — Output Quality Checklist
2
+
3
+ > **Used by:** Validator (review gate), Executor (awareness before writing)
4
+
5
+ ---
6
+
7
+ ## The Checklist
8
+
9
+ Before shipping any output, verify:
10
+
11
+ ### Language
12
+ - [ ] No sparkles or decorative emoji (✨ šŸš€ šŸ’” šŸŽÆ)
13
+ - [ ] No em dashes (—) unless direct quote or title separator
14
+ - [ ] No ellipsis for drama (...)
15
+ - [ ] No exclamation points unless error/warning
16
+
17
+ ### Words to Kill
18
+ - [ ] No "revolutionary" / "game-changing" / "cutting-edge"
19
+ - [ ] No "seamlessly" / "effortlessly" / "elegantly"
20
+ - [ ] No "robust" / "powerful" / "comprehensive"
21
+ - [ ] No "leverage" (use "use")
22
+ - [ ] No "utilize" (use "use")
23
+ - [ ] No "facilitate" (use "help" or "enable")
24
+
25
+ ### Filler Phrases to Cut
26
+ - [ ] No "It's worth noting that..."
27
+ - [ ] No "Importantly, ..."
28
+ - [ ] No "Interestingly, ..."
29
+ - [ ] No "As you can see..."
30
+ - [ ] No "In order to..." (just "to")
31
+ - [ ] No "Basically, ..." / "Essentially, ..."
32
+ - [ ] No "At the end of the day..."
33
+
34
+ ### Structure
35
+ - [ ] Max 3-4 sentences per response (unless code/data)
36
+ - [ ] No unnecessary headers in short responses
37
+ - [ ] No bullet points when a sentence works
38
+ - [ ] No "Here's what I found:" preambles - just show it
39
+
40
+ ### Tone
41
+ - [ ] Direct, not performative
42
+ - [ ] Statements, not hedging ("This might be..." → "This is...")
43
+ - [ ] No apologetic openings ("I apologize for...")
44
+ - [ ] No sycophantic praise ("Great question!")
45
+
46
+ ---
47
+
48
+ ## How to Use
49
+
50
+ **Validator:** Run through checklist during review. Block if violations found.
51
+
52
+ **Executor:** Read before writing. Internalize. Produce clean output first time.
53
+
54
+ ---
55
+
56
+ ## Examples
57
+
58
+ **Slop:**
59
+ > ✨ Great question! It's worth noting that this revolutionary approach seamlessly leverages our robust API to effortlessly facilitate user authentication. Essentially, at the end of the day, this is a game-changing solution!
60
+
61
+ **Clean:**
62
+ > Auth happens in `middleware/auth.ts:15-30`. Token validation, then user lookup. Returns 401 on failure.
63
+
64
+ ---
65
+
66
+ **Anti-slop = Respect for the reader's time.**
package/bin/atris.js CHANGED
@@ -242,7 +242,7 @@ async function interactiveEntry(userInput) {
242
242
  // Case 1: Hot Start (User provided input: "atris fix bug")
243
243
  if (userInput) {
244
244
  console.log('');
245
- console.log(`✨ Request: "${userInput}"`);
245
+ console.log(`Request: "${userInput}"`);
246
246
  console.log(' Initializing Navigator...');
247
247
  await planCmd(userInput);
248
248
  return;
@@ -305,7 +305,7 @@ async function interactiveEntry(userInput) {
305
305
  }
306
306
 
307
307
  // State: Idle / Default
308
- console.log('\n✨ Canvas is clean. What are we building?');
308
+ console.log('\nCanvas is clean. What are we building?');
309
309
  console.log(' (Type a request, "brainstorm", "status", or press Enter to exit)');
310
310
 
311
311
  const request = await ask('\n> ');
@@ -456,6 +456,13 @@ function initAtris() {
456
456
  console.log('āœ“ Created atris/agent_team/ folder');
457
457
  }
458
458
 
459
+ // Create policies/ subfolder
460
+ const policiesDir = path.join(targetDir, 'policies');
461
+ if (!fs.existsSync(policiesDir)) {
462
+ fs.mkdirSync(policiesDir, { recursive: true });
463
+ console.log('āœ“ Created atris/policies/ folder');
464
+ }
465
+
459
466
  // Create placeholder files
460
467
  const gettingStartedFile = path.join(targetDir, 'GETTING_STARTED.md');
461
468
  const personaFile = path.join(targetDir, 'PERSONA.md');
@@ -517,22 +524,32 @@ function initAtris() {
517
524
  console.log('āœ“ Created agent_team/launcher.md');
518
525
  }
519
526
 
527
+ // Copy policies from package
528
+ const antislopSource = path.join(__dirname, '..', 'atris', 'policies', 'ANTISLOP.md');
529
+ const antislopFile = path.join(policiesDir, 'ANTISLOP.md');
530
+ if (!fs.existsSync(antislopFile) && fs.existsSync(antislopSource)) {
531
+ fs.copyFileSync(antislopSource, antislopFile);
532
+ console.log('āœ“ Created policies/ANTISLOP.md');
533
+ }
534
+
520
535
  // Copy atris.md to the folder
521
536
  if (fs.existsSync(sourceFile)) {
522
537
  fs.copyFileSync(sourceFile, targetFile);
523
538
  console.log('āœ“ Copied atris.md to atris/ folder');
524
- console.log('\n✨ ATRIS initialized! Full structure created:');
539
+ console.log('\nATRIS initialized. Structure created:');
525
540
  console.log(' atris/');
526
541
  console.log(' ā”œā”€ā”€ GETTING_STARTED.md (read this first!)');
527
542
  console.log(' ā”œā”€ā”€ PERSONA.md (agent personality)');
528
543
  console.log(' ā”œā”€ā”€ atris.md (AI agent instructions)');
529
544
  console.log(' ā”œā”€ā”€ MAP.md (placeholder)');
530
545
  console.log(' ā”œā”€ā”€ TASK_CONTEXTS.md (placeholder)');
531
- console.log(' └── agent_team/');
532
- console.log(' ā”œā”€ā”€ navigator.md (placeholder)');
533
- console.log(' ā”œā”€ā”€ executor.md (placeholder)');
534
- console.log(' ā”œā”€ā”€ validator.md (placeholder)');
535
- console.log(' └── launcher.md (placeholder)');
546
+ console.log(' ā”œā”€ā”€ agent_team/');
547
+ console.log(' │ ā”œā”€ā”€ navigator.md');
548
+ console.log(' │ ā”œā”€ā”€ executor.md');
549
+ console.log(' │ ā”œā”€ā”€ validator.md');
550
+ console.log(' │ └── launcher.md');
551
+ console.log(' └── policies/');
552
+ console.log(' └── ANTISLOP.md (output quality checklist)');
536
553
  console.log('\nNext steps:');
537
554
  console.log('1. Read atris/GETTING_STARTED.md for the full guide');
538
555
  console.log('2. Open atris/atris.md and paste it to your AI agent');
@@ -558,6 +575,13 @@ function syncAtris() {
558
575
  fs.mkdirSync(agentTeamDir, { recursive: true });
559
576
  }
560
577
 
578
+ // Ensure policies folder exists
579
+ const policiesDir = path.join(targetDir, 'policies');
580
+ if (!fs.existsSync(policiesDir)) {
581
+ fs.mkdirSync(policiesDir, { recursive: true });
582
+ console.log('āœ“ Created atris/policies/ folder');
583
+ }
584
+
561
585
  // Files to sync
562
586
  const filesToSync = [
563
587
  { source: 'atris.md', target: 'atris.md' },
@@ -566,7 +590,8 @@ function syncAtris() {
566
590
  { source: 'atris/agent_team/navigator.md', target: 'agent_team/navigator.md' },
567
591
  { source: 'atris/agent_team/executor.md', target: 'agent_team/executor.md' },
568
592
  { source: 'atris/agent_team/validator.md', target: 'agent_team/validator.md' },
569
- { source: 'atris/agent_team/launcher.md', target: 'agent_team/launcher.md' }
593
+ { source: 'atris/agent_team/launcher.md', target: 'agent_team/launcher.md' },
594
+ { source: 'atris/policies/ANTISLOP.md', target: 'policies/ANTISLOP.md' }
570
595
  ];
571
596
 
572
597
  let updated = 0;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "atris",
3
- "version": "2.0.3",
3
+ "version": "2.0.5",
4
4
  "description": "atrisDev - A new way to build and manage agents",
5
5
  "main": "bin/atris.js",
6
6
  "bin": {
@@ -15,7 +15,8 @@
15
15
  "atris.md",
16
16
  "GETTING_STARTED.md",
17
17
  "PERSONA.md",
18
- "atris/agent_team/"
18
+ "atris/agent_team/",
19
+ "atris/policies/"
19
20
  ],
20
21
  "scripts": {
21
22
  "test": "echo \"Error: no test specified\" && exit 1"