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.
package/atris/GETTING_STARTED.md
CHANGED
|
@@ -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
|
-
|
|
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
|
|
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(
|
|
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('\
|
|
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('\
|
|
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('
|
|
532
|
-
console.log('
|
|
533
|
-
console.log('
|
|
534
|
-
console.log('
|
|
535
|
-
console.log('
|
|
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
|
+
"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"
|