tycono-server 0.1.0-beta.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/bin/cli.js +35 -0
- package/bin/server.ts +160 -0
- package/package.json +50 -0
- package/src/api/package.json +31 -0
- package/src/api/src/create-app.ts +90 -0
- package/src/api/src/create-server.ts +251 -0
- package/src/api/src/engine/agent-loop.ts +738 -0
- package/src/api/src/engine/authority-validator.ts +149 -0
- package/src/api/src/engine/context-assembler.ts +912 -0
- package/src/api/src/engine/index.ts +27 -0
- package/src/api/src/engine/knowledge-gate.ts +365 -0
- package/src/api/src/engine/llm-adapter.ts +304 -0
- package/src/api/src/engine/org-tree.ts +270 -0
- package/src/api/src/engine/role-lifecycle.ts +369 -0
- package/src/api/src/engine/runners/claude-cli.ts +796 -0
- package/src/api/src/engine/runners/direct-api.ts +66 -0
- package/src/api/src/engine/runners/index.ts +30 -0
- package/src/api/src/engine/runners/types.ts +95 -0
- package/src/api/src/engine/skill-template.ts +134 -0
- package/src/api/src/engine/tools/definitions.ts +201 -0
- package/src/api/src/engine/tools/executor.ts +611 -0
- package/src/api/src/routes/active-sessions.ts +134 -0
- package/src/api/src/routes/coins.ts +153 -0
- package/src/api/src/routes/company.ts +57 -0
- package/src/api/src/routes/cost.ts +141 -0
- package/src/api/src/routes/engine.ts +220 -0
- package/src/api/src/routes/execute.ts +1075 -0
- package/src/api/src/routes/git.ts +211 -0
- package/src/api/src/routes/knowledge.ts +378 -0
- package/src/api/src/routes/operations.ts +309 -0
- package/src/api/src/routes/preferences.ts +63 -0
- package/src/api/src/routes/presets.ts +123 -0
- package/src/api/src/routes/projects.ts +82 -0
- package/src/api/src/routes/quests.ts +41 -0
- package/src/api/src/routes/roles.ts +112 -0
- package/src/api/src/routes/save.ts +152 -0
- package/src/api/src/routes/sessions.ts +288 -0
- package/src/api/src/routes/setup.ts +437 -0
- package/src/api/src/routes/skills.ts +357 -0
- package/src/api/src/routes/speech.ts +959 -0
- package/src/api/src/routes/supervision.ts +136 -0
- package/src/api/src/routes/sync.ts +165 -0
- package/src/api/src/server.ts +59 -0
- package/src/api/src/services/activity-stream.ts +184 -0
- package/src/api/src/services/activity-tracker.ts +115 -0
- package/src/api/src/services/claude-md-manager.ts +94 -0
- package/src/api/src/services/company-config.ts +115 -0
- package/src/api/src/services/database.ts +77 -0
- package/src/api/src/services/digest-engine.ts +313 -0
- package/src/api/src/services/execution-manager.ts +1036 -0
- package/src/api/src/services/file-reader.ts +77 -0
- package/src/api/src/services/git-save.ts +614 -0
- package/src/api/src/services/job-manager.ts +16 -0
- package/src/api/src/services/knowledge-importer.ts +466 -0
- package/src/api/src/services/markdown-parser.ts +173 -0
- package/src/api/src/services/port-registry.ts +222 -0
- package/src/api/src/services/preferences.ts +150 -0
- package/src/api/src/services/preset-loader.ts +149 -0
- package/src/api/src/services/pricing.ts +34 -0
- package/src/api/src/services/scaffold.ts +546 -0
- package/src/api/src/services/session-store.ts +340 -0
- package/src/api/src/services/supervisor-heartbeat.ts +897 -0
- package/src/api/src/services/team-recommender.ts +382 -0
- package/src/api/src/services/token-ledger.ts +127 -0
- package/src/api/src/services/wave-messages.ts +194 -0
- package/src/api/src/services/wave-multiplexer.ts +356 -0
- package/src/api/src/services/wave-tracker.ts +359 -0
- package/src/api/src/utils/role-level.ts +31 -0
- package/src/core/scaffolder.ts +620 -0
- package/src/shared/types.ts +224 -0
- package/templates/CLAUDE.md.tmpl +239 -0
- package/templates/company.md.tmpl +17 -0
- package/templates/gitignore.tmpl +28 -0
- package/templates/roles.md.tmpl +8 -0
- package/templates/skills/_manifest.json +23 -0
- package/templates/skills/agent-browser/SKILL.md +159 -0
- package/templates/skills/agent-browser/meta.json +19 -0
- package/templates/skills/akb-linter/SKILL.md +125 -0
- package/templates/skills/akb-linter/meta.json +12 -0
- package/templates/skills/knowledge-gate/SKILL.md +120 -0
- package/templates/skills/knowledge-gate/meta.json +12 -0
- package/templates/teams/agency.json +58 -0
- package/templates/teams/research.json +58 -0
- package/templates/teams/startup.json +58 -0
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: agent-browser
|
|
3
|
+
description: Browser automation for AI agents using agent-browser CLI. Token-efficient alternative to Playwright MCP with accessibility-first element selection.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Agent Browser
|
|
7
|
+
|
|
8
|
+
Token-efficient browser automation CLI for AI agents. ~82% fewer tokens than Playwright MCP.
|
|
9
|
+
|
|
10
|
+
## Prerequisites
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
# Install globally (one-time)
|
|
14
|
+
npm install -g agent-browser
|
|
15
|
+
|
|
16
|
+
# Verify installation
|
|
17
|
+
agent-browser --version
|
|
18
|
+
|
|
19
|
+
# If not installed, the agent should run the install command above before proceeding.
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Quick Reference
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
# Install check
|
|
26
|
+
agent-browser --version
|
|
27
|
+
|
|
28
|
+
# Core flow: open → snapshot → action
|
|
29
|
+
agent-browser open <url>
|
|
30
|
+
agent-browser snapshot # accessibility tree (@e1, @e2, ...)
|
|
31
|
+
agent-browser click @e3
|
|
32
|
+
agent-browser fill @e5 "text"
|
|
33
|
+
agent-browser screenshot /tmp/page.png
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Core Commands
|
|
37
|
+
|
|
38
|
+
| Command | Description |
|
|
39
|
+
|---------|-------------|
|
|
40
|
+
| `open <url>` | Open a page |
|
|
41
|
+
| `snapshot` | Return accessibility tree + element refs |
|
|
42
|
+
| `click <@ref>` | Click an element |
|
|
43
|
+
| `fill <@ref> <text>` | Fill an input field |
|
|
44
|
+
| `type <@ref> <text>` | Type text (preserves existing) |
|
|
45
|
+
| `press <key>` | Press key (Enter, Tab, Control+a) |
|
|
46
|
+
| `screenshot [path]` | Take screenshot |
|
|
47
|
+
| `pdf <path>` | Save as PDF |
|
|
48
|
+
| `wait <sel\|ms>` | Wait for element or time |
|
|
49
|
+
| `scroll <dir> [px]` | Scroll (up/down/left/right) |
|
|
50
|
+
| `close` | Close browser |
|
|
51
|
+
|
|
52
|
+
## Element Selection
|
|
53
|
+
|
|
54
|
+
Accessibility tree `@ref` is the default:
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
agent-browser snapshot
|
|
58
|
+
# Output example:
|
|
59
|
+
# @e1 heading "Welcome"
|
|
60
|
+
# @e2 button "Login"
|
|
61
|
+
# @e3 textbox "Email"
|
|
62
|
+
|
|
63
|
+
agent-browser click @e2
|
|
64
|
+
agent-browser fill @e3 "user@example.com"
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
CSS selector and XPath also supported:
|
|
68
|
+
```bash
|
|
69
|
+
agent-browser click "#submit-btn"
|
|
70
|
+
agent-browser click "xpath=//button[@type='submit']"
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
## Find Elements
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
agent-browser find role button click # Find by role and click
|
|
77
|
+
agent-browser find text "Submit" click # Find by text
|
|
78
|
+
agent-browser find label "Email" fill "a@b.com"
|
|
79
|
+
agent-browser find testid "login-btn" click
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
## Get Info
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
agent-browser get text @e1 # Get text content
|
|
86
|
+
agent-browser get html @e1 # Get HTML
|
|
87
|
+
agent-browser get value @e3 # Get input value
|
|
88
|
+
agent-browser get url # Current URL
|
|
89
|
+
agent-browser get title # Page title
|
|
90
|
+
agent-browser get count "li" # Element count
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
## State Check
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
agent-browser is visible @e1
|
|
97
|
+
agent-browser is enabled @e2
|
|
98
|
+
agent-browser is checked @e3
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
## Network
|
|
102
|
+
|
|
103
|
+
```bash
|
|
104
|
+
agent-browser network requests # List requests
|
|
105
|
+
agent-browser network route "*/api/*" --abort # Block requests
|
|
106
|
+
agent-browser network route "*/api/*" --body '{}' # Mock response
|
|
107
|
+
agent-browser network unroute "*/api/*"
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
## Browser Settings
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
agent-browser set viewport 1280 720
|
|
114
|
+
agent-browser set device "iPhone 15"
|
|
115
|
+
agent-browser set media dark
|
|
116
|
+
agent-browser set offline on
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
## Workflow Patterns
|
|
120
|
+
|
|
121
|
+
### 1. Page Exploration
|
|
122
|
+
|
|
123
|
+
```bash
|
|
124
|
+
agent-browser open "http://localhost:3000"
|
|
125
|
+
agent-browser snapshot
|
|
126
|
+
# → Check @ref, then take action
|
|
127
|
+
agent-browser click @e5
|
|
128
|
+
agent-browser snapshot # Verify state change
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
### 2. Form Filling
|
|
132
|
+
|
|
133
|
+
```bash
|
|
134
|
+
agent-browser open "http://localhost:3000/login"
|
|
135
|
+
agent-browser snapshot
|
|
136
|
+
agent-browser fill @e3 "user@example.com"
|
|
137
|
+
agent-browser fill @e4 "password123"
|
|
138
|
+
agent-browser click @e5 # submit button
|
|
139
|
+
agent-browser wait 2000
|
|
140
|
+
agent-browser screenshot /tmp/after-login.png
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
### 3. Verification
|
|
144
|
+
|
|
145
|
+
```bash
|
|
146
|
+
agent-browser open "http://localhost:3000"
|
|
147
|
+
agent-browser wait "h1"
|
|
148
|
+
agent-browser get text "h1"
|
|
149
|
+
agent-browser is visible "#success-message"
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
## When to Use
|
|
153
|
+
|
|
154
|
+
| Scenario | Recommended |
|
|
155
|
+
|----------|-------------|
|
|
156
|
+
| AI agent web browsing/verification | **agent-browser** (token efficient) |
|
|
157
|
+
| Complex E2E test suites | Playwright (richer API) |
|
|
158
|
+
| Advanced network interception | Playwright |
|
|
159
|
+
| Quick UI checks | **agent-browser** (simple CLI) |
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "agent-browser",
|
|
3
|
+
"name": "Agent Browser",
|
|
4
|
+
"description": "Token-efficient browser automation CLI for AI agents. Accessibility-first alternative to Playwright MCP.",
|
|
5
|
+
"version": "1.0.0",
|
|
6
|
+
"author": "tycono",
|
|
7
|
+
"tags": ["browser", "automation", "ui", "testing"],
|
|
8
|
+
"category": "core",
|
|
9
|
+
"compatibleRoles": ["*"],
|
|
10
|
+
"dependencies": [],
|
|
11
|
+
"files": ["SKILL.md"],
|
|
12
|
+
"tools": [
|
|
13
|
+
{
|
|
14
|
+
"package": "agent-browser",
|
|
15
|
+
"binary": "agent-browser",
|
|
16
|
+
"installCmd": "npm install -g agent-browser"
|
|
17
|
+
}
|
|
18
|
+
]
|
|
19
|
+
}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: akb-linter
|
|
3
|
+
description: "AKB document hygiene checker. Finds documents that confuse AI agents."
|
|
4
|
+
allowed-tools: Read, Glob, Grep, Bash
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# AKB Document Linter
|
|
8
|
+
|
|
9
|
+
> "Only keep documents that AI can read and act on accurately."
|
|
10
|
+
|
|
11
|
+
## Core Problem
|
|
12
|
+
|
|
13
|
+
| Problem | AI Behavior | Result |
|
|
14
|
+
|---------|------------|--------|
|
|
15
|
+
| History mixed in | "Is v1 still active? Is v2 current?" | Token waste on verification |
|
|
16
|
+
| Placeholder docs | Grep noise, dead-end links | Search inefficiency |
|
|
17
|
+
| Duplicate docs | "Which one is truth?" | Wrong decisions |
|
|
18
|
+
| Links without context | "Why should I follow this?" | Exploration abandoned |
|
|
19
|
+
| **Implementation code mixed in** | Reads code directly, misses semantics | AKB purpose defeated |
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## Checks (9 items)
|
|
24
|
+
|
|
25
|
+
### Category A: AI Confusion (Critical)
|
|
26
|
+
|
|
27
|
+
#### 1. History Contamination
|
|
28
|
+
|
|
29
|
+
AI takes documents literally. Humans skip "old stuff" but AI gets confused.
|
|
30
|
+
|
|
31
|
+
```
|
|
32
|
+
BAD: "Previously we used v1, then migrated to v2"
|
|
33
|
+
GOOD: "Currently using v2"
|
|
34
|
+
(History goes to separate archive)
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
**Keywords**: `previously`, `former`, `deprecated`, `no longer`, `migrated`, `legacy`, `v1`
|
|
38
|
+
|
|
39
|
+
#### 2. Placeholder/Empty Documents
|
|
40
|
+
|
|
41
|
+
Search noise. Grep matches useless files.
|
|
42
|
+
|
|
43
|
+
```
|
|
44
|
+
BAD: < 10 lines, only "TODO"/"TBD", frontmatter only
|
|
45
|
+
ACTION: Fill content or delete
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
#### 3. Duplicate/Conflict Check
|
|
49
|
+
|
|
50
|
+
Same info in 2 places = Single Source of Truth violation.
|
|
51
|
+
|
|
52
|
+
```
|
|
53
|
+
BAD: Two docs on same topic with slightly different info
|
|
54
|
+
ACTION: Merge into one, or clearly separate roles (Hub vs Node)
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
#### 4. Implementation Code Check
|
|
58
|
+
|
|
59
|
+
AKB = semantics (why, relationships). Code repo = implementation (how).
|
|
60
|
+
|
|
61
|
+
```
|
|
62
|
+
BAD: .py/.js/.ts/.sql files in AKB doc folders
|
|
63
|
+
BAD: Full function implementations in docs
|
|
64
|
+
GOOD: Architecture decisions, design philosophy
|
|
65
|
+
GOOD: Code coordinates -> "See src/web/src/components/"
|
|
66
|
+
|
|
67
|
+
EXCEPTIONS:
|
|
68
|
+
- .claude/ (infrastructure)
|
|
69
|
+
- src/ (source code submodule)
|
|
70
|
+
- Short code snippets in docs (<10 lines, for explanation)
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### Category B: Structure Quality (Warning)
|
|
74
|
+
|
|
75
|
+
#### 5. TL;DR Section
|
|
76
|
+
- PASS: `## TL;DR` exists (3-5 lines)
|
|
77
|
+
- WARN: Missing
|
|
78
|
+
|
|
79
|
+
#### 6. Document Length (200-line threshold)
|
|
80
|
+
- PASS: <= 200 lines
|
|
81
|
+
- WARN: 200-300 lines (split recommended)
|
|
82
|
+
- FAIL: > 300 lines (split required)
|
|
83
|
+
|
|
84
|
+
#### 7. Context Links
|
|
85
|
+
- PASS: Links with context in body text
|
|
86
|
+
- WARN: Only `## Related` list (AI doesn't know why to follow)
|
|
87
|
+
- FAIL: No links (isolated document)
|
|
88
|
+
|
|
89
|
+
#### 8. Filename Keywords
|
|
90
|
+
- PASS: `competitor-analysis-openclaw.md`
|
|
91
|
+
- WARN: `analysis.md` (ambiguous)
|
|
92
|
+
- FAIL: `doc1.md`, `temp.md`
|
|
93
|
+
|
|
94
|
+
#### 9. Frontmatter
|
|
95
|
+
```yaml
|
|
96
|
+
---
|
|
97
|
+
title: "..." # Required
|
|
98
|
+
akb_type: hub|node # Recommended
|
|
99
|
+
tags: [...] # Recommended
|
|
100
|
+
status: active # Recommended
|
|
101
|
+
---
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
---
|
|
105
|
+
|
|
106
|
+
## Severity
|
|
107
|
+
|
|
108
|
+
| Severity | Condition | Meaning |
|
|
109
|
+
|----------|-----------|---------|
|
|
110
|
+
| Critical | 1+ Category A issues | AI confusion, fix immediately |
|
|
111
|
+
| Warning | Category B issues only | Quality improvement recommended |
|
|
112
|
+
| Pass | No issues | AI can understand clearly |
|
|
113
|
+
|
|
114
|
+
---
|
|
115
|
+
|
|
116
|
+
## Core Principles
|
|
117
|
+
|
|
118
|
+
> "More docs is not better"
|
|
119
|
+
> "Only keep docs AI can act on accurately"
|
|
120
|
+
|
|
121
|
+
1. **History -> archive** - Current state only in active docs
|
|
122
|
+
2. **Empty -> delete** - Remove noise
|
|
123
|
+
3. **Duplicates -> merge** - Single Source of Truth
|
|
124
|
+
4. **Links with context** - Give AI reason to follow
|
|
125
|
+
5. **Semantics vs implementation** - AKB = "why", code = "how"
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "akb-linter",
|
|
3
|
+
"name": "AKB Document Linter",
|
|
4
|
+
"description": "AKB document hygiene checker. Finds documents that confuse AI agents.",
|
|
5
|
+
"version": "1.0.0",
|
|
6
|
+
"author": "tycono",
|
|
7
|
+
"tags": ["documentation", "quality", "core"],
|
|
8
|
+
"category": "core",
|
|
9
|
+
"compatibleRoles": ["*"],
|
|
10
|
+
"dependencies": [],
|
|
11
|
+
"files": ["SKILL.md"]
|
|
12
|
+
}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: knowledge-gate
|
|
3
|
+
description: "Knowledge documentation gatekeeper. Dynamic domain expert analysis to find optimal placement and connections."
|
|
4
|
+
allowed-tools: Read, Glob, Grep, Bash, Agent
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Knowledge Gate (Dynamic Domain Experts)
|
|
8
|
+
|
|
9
|
+
> "Prevent mindless document creation. Domain experts find optimal connections."
|
|
10
|
+
|
|
11
|
+
## Core Problem
|
|
12
|
+
|
|
13
|
+
| Pattern | Problem |
|
|
14
|
+
|---------|---------|
|
|
15
|
+
| New insight -> create new doc immediately | Duplicates existing docs |
|
|
16
|
+
| Similar topics scattered across files | Inefficient search, AI confusion |
|
|
17
|
+
| More docs != better knowledge | Defeats AKB purpose |
|
|
18
|
+
| **Isolated docs with no links** | **Discovery failure** |
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## Process
|
|
23
|
+
|
|
24
|
+
### Step 1: Insight Summary
|
|
25
|
+
|
|
26
|
+
When documenting new knowledge:
|
|
27
|
+
1. **One-line summary** of the insight
|
|
28
|
+
2. Extract **3-5 keywords**
|
|
29
|
+
|
|
30
|
+
### Step 2: Existing Document Search (Quick Scan)
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
# Search with keywords
|
|
34
|
+
grep -rn "{keyword1}\|{keyword2}\|{keyword3}" --include="*.md" .
|
|
35
|
+
|
|
36
|
+
# Find similar topic docs
|
|
37
|
+
find . -name "*.md" | xargs grep -l "{core_topic}"
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
### Step 3: Dynamic Domain Expert Analysis (Diverge)
|
|
41
|
+
|
|
42
|
+
#### 3.1 Discover All Hubs
|
|
43
|
+
|
|
44
|
+
Hub pattern: `{folder-name}.md` as folder entry point, or `akb_type: hub` frontmatter.
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
# Find Hub documents
|
|
48
|
+
find . -name "*.md" -exec sh -c 'dir=$(dirname "$1"); base=$(basename "$dir"); fname=$(basename "$1" .md); [ "$base" = "$fname" ] && echo "$1"' _ {} \;
|
|
49
|
+
grep -rl "akb_type: hub" --include="*.md" .
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
#### 3.2 Parallel Expert Agent Execution
|
|
53
|
+
|
|
54
|
+
For **every discovered Hub**, run an Expert Agent in parallel:
|
|
55
|
+
|
|
56
|
+
Each expert evaluates:
|
|
57
|
+
- Is there a **direct dependency** between this insight and my domain?
|
|
58
|
+
- Rate relevance **strictly**: high (direct dependency) / medium (indirect) / none
|
|
59
|
+
|
|
60
|
+
**Relevance criteria (strict):**
|
|
61
|
+
|
|
62
|
+
| Relevance | Criteria | Example |
|
|
63
|
+
|-----------|----------|---------|
|
|
64
|
+
| HIGH | Without this insight, **my domain docs are incomplete** | "DB migration design" -> Architecture Hub |
|
|
65
|
+
| MEDIUM | Nice to reference but **not required** | "DB migration" -> Knowledge Hub |
|
|
66
|
+
| NONE | **No direct relation** to my domain | "DB migration" -> Company Hub |
|
|
67
|
+
|
|
68
|
+
**Anti-bias rule**: Don't force connections. Only HIGH = direct dependency.
|
|
69
|
+
|
|
70
|
+
#### 3.3 Converge Results
|
|
71
|
+
|
|
72
|
+
| Rule | Description |
|
|
73
|
+
|------|-------------|
|
|
74
|
+
| **Only HIGH gets action** | MEDIUM/NONE are informational only |
|
|
75
|
+
| **Pick 1 primary Hub** | If multiple HIGH, choose most direct |
|
|
76
|
+
| **Max 3 connections** | Limit total link work to 3 |
|
|
77
|
+
| **Deduplicate hierarchy** | If parent Hub is HIGH, skip child |
|
|
78
|
+
|
|
79
|
+
### Step 4: Decide Placement
|
|
80
|
+
|
|
81
|
+
| Overlap | Threshold | Action |
|
|
82
|
+
|---------|-----------|--------|
|
|
83
|
+
| HIGH (70%+) | Core topic matches | Add section to existing doc |
|
|
84
|
+
| MEDIUM (30-70%) | Related but different angle | New doc + cross-link |
|
|
85
|
+
| LOW (<30%) | Independent topic | New doc (register in Hub) |
|
|
86
|
+
| None | 0 search results | New doc |
|
|
87
|
+
|
|
88
|
+
### Step 5: AKB Linter Verification
|
|
89
|
+
|
|
90
|
+
Run akb-linter on new/modified document.
|
|
91
|
+
|
|
92
|
+
### Step 6: Execute Connections
|
|
93
|
+
|
|
94
|
+
1. **Hub routing**: Add link in the relevant Hub
|
|
95
|
+
2. **Cross-links**: Add mutual references to related docs
|
|
96
|
+
3. **Related Documentation**: Include links in new doc
|
|
97
|
+
|
|
98
|
+
---
|
|
99
|
+
|
|
100
|
+
## Decision Criteria
|
|
101
|
+
|
|
102
|
+
| Overlap | Action |
|
|
103
|
+
|---------|--------|
|
|
104
|
+
| 70%+ | Add to existing document (preferred) |
|
|
105
|
+
| 30-70% | Reference existing + cross-link |
|
|
106
|
+
| <30% | New document (justify + register in Hub) |
|
|
107
|
+
|
|
108
|
+
---
|
|
109
|
+
|
|
110
|
+
## Core Principles
|
|
111
|
+
|
|
112
|
+
> "1 doc added = maintenance cost increased"
|
|
113
|
+
> "Strengthen existing > Create new"
|
|
114
|
+
> "Isolated doc = dead doc"
|
|
115
|
+
|
|
116
|
+
1. **Existing first** - Never create without searching
|
|
117
|
+
2. **Expert analysis** - All domain Hubs weigh in
|
|
118
|
+
3. **Links required** - Hub routing + cross-links mandatory
|
|
119
|
+
4. **Justify creation** - State why new doc is needed
|
|
120
|
+
5. **Preview before action** - Show what will change
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "knowledge-gate",
|
|
3
|
+
"name": "Knowledge Gate",
|
|
4
|
+
"description": "Knowledge documentation gatekeeper. Dynamic domain expert analysis to find optimal placement and connections for new knowledge.",
|
|
5
|
+
"version": "1.0.0",
|
|
6
|
+
"author": "tycono",
|
|
7
|
+
"tags": ["knowledge", "documentation", "core"],
|
|
8
|
+
"category": "core",
|
|
9
|
+
"compatibleRoles": ["*"],
|
|
10
|
+
"dependencies": ["akb-linter"],
|
|
11
|
+
"files": ["SKILL.md"]
|
|
12
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"id": "creative-director",
|
|
4
|
+
"name": "Luna",
|
|
5
|
+
"level": "c-level",
|
|
6
|
+
"reportsTo": "CEO",
|
|
7
|
+
"persona": "Luna sees the world in mood boards and big ideas. Sets creative vision with infectious enthusiasm then lets the team run with it. Fiercely protective of brand identity but open to wild experiments. Gives feedback like poetry — specific, visual, and memorable. Knows when to push and when to trust. Visionary, expressive, bold, warm but exacting.",
|
|
8
|
+
"defaultSkills": ["knowledge-gate", "akb-linter", "agent-browser"]
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
"id": "account-director",
|
|
12
|
+
"name": "Max",
|
|
13
|
+
"level": "c-level",
|
|
14
|
+
"reportsTo": "CEO",
|
|
15
|
+
"persona": "Max is the bridge between clients and creatives. Reads the room like a chess board and always knows what stakeholders actually want versus what they say. Smooth under pressure, organized beyond reason, and genuinely enjoys making timelines work. Protective of the team's creative space. Strategic, composed, relationship-driven, quietly ambitious.",
|
|
16
|
+
"defaultSkills": ["knowledge-gate", "akb-linter", "agent-browser"]
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"id": "designer",
|
|
20
|
+
"name": "Pixel",
|
|
21
|
+
"level": "member",
|
|
22
|
+
"reportsTo": "creative-director",
|
|
23
|
+
"persona": "Pixel lives in Figma and dreams in color palettes. Obsessive about visual hierarchy and spacing. Creates design systems for fun and treats inconsistent icons as a personal offense. Surprisingly opinionated about typography for someone so chill. Gives constructive feedback wrapped in enthusiasm. Creative, precise, easygoing, quietly perfectionist.",
|
|
24
|
+
"defaultSkills": ["knowledge-gate", "agent-browser"]
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"id": "copywriter",
|
|
28
|
+
"name": "Blake",
|
|
29
|
+
"level": "member",
|
|
30
|
+
"reportsTo": "creative-director",
|
|
31
|
+
"persona": "Blake writes headlines that stop scrolling thumbs. Has a notebook full of half-finished taglines and zero regrets about it. Believes every brand has a voice waiting to be found. Gets unreasonably excited about a perfect CTA. Hates buzzwords but loves wordplay. Witty, concise, brand-obsessed, deceptively strategic.",
|
|
32
|
+
"defaultSkills": ["knowledge-gate", "agent-browser"]
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"id": "developer",
|
|
36
|
+
"name": "Neo",
|
|
37
|
+
"level": "member",
|
|
38
|
+
"reportsTo": "account-director",
|
|
39
|
+
"persona": "Neo builds things fast and makes them look effortless. Lives at the intersection of design and engineering — if Pixel dreams it, Neo ships it. Loves clean code but loves shipping more. Has strong opinions about frameworks but adapts quickly. Stays calm when deadlines shrink. Pragmatic, fast, resourceful, casually brilliant.",
|
|
40
|
+
"defaultSkills": ["knowledge-gate", "agent-browser"]
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"id": "strategist",
|
|
44
|
+
"name": "Kai",
|
|
45
|
+
"level": "member",
|
|
46
|
+
"reportsTo": "account-director",
|
|
47
|
+
"persona": "Kai connects dots that nobody else sees. Turns market research into actionable campaign strategies. Loves competitive analysis and hates assumptions without data. Asks 'so what?' after every insight until the answer actually matters. The person who makes the brief everyone wishes they'd written. Analytical, creative, persistent, refreshingly direct.",
|
|
48
|
+
"defaultSkills": ["knowledge-gate", "agent-browser"]
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
"id": "qa",
|
|
52
|
+
"name": "Scout",
|
|
53
|
+
"level": "member",
|
|
54
|
+
"reportsTo": "creative-director",
|
|
55
|
+
"persona": "Scout is the team's last line of defense before anything goes live. Reviews every deliverable with fresh eyes — checking links, testing responsiveness, proofing copy, and clicking every button in agent-browser. Has a talent for finding the one broken thing nobody else noticed. Diplomatically brutal in review notes. Thorough, eagle-eyed, client-minded, impossible to sneak past.",
|
|
56
|
+
"defaultSkills": ["knowledge-gate", "agent-browser"]
|
|
57
|
+
}
|
|
58
|
+
]
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"id": "lead-researcher",
|
|
4
|
+
"name": "Dr. Park",
|
|
5
|
+
"level": "c-level",
|
|
6
|
+
"reportsTo": "CEO",
|
|
7
|
+
"persona": "Dr. Park lives for the 'aha' moment buried in page 47 of a paper nobody reads. Methodical to a fault but surprisingly creative when framing research questions. Insists on reproducibility like it's a religion. Gentle mentor who asks 'what does the data actually say?' until juniors learn to stop hand-waving. Rigorous, patient, quietly brilliant, caffeine-dependent.",
|
|
8
|
+
"defaultSkills": ["knowledge-gate", "akb-linter", "agent-browser"]
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
"id": "lead-analyst",
|
|
12
|
+
"name": "Prof. Kim",
|
|
13
|
+
"level": "c-level",
|
|
14
|
+
"reportsTo": "CEO",
|
|
15
|
+
"persona": "Prof. Kim turns messy datasets into compelling narratives. Has a sixth sense for statistical traps and loves debunking sloppy conclusions. Obsessive about methodology but surprisingly good at explaining complex findings to non-experts. Dry wit that surfaces in footnotes. Analytical, meticulous, skeptical, secretly competitive.",
|
|
16
|
+
"defaultSkills": ["knowledge-gate", "akb-linter", "agent-browser"]
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"id": "researcher",
|
|
20
|
+
"name": "Alex",
|
|
21
|
+
"level": "member",
|
|
22
|
+
"reportsTo": "lead-researcher",
|
|
23
|
+
"persona": "Alex dives deep into rabbit holes and somehow always comes back with gold. Reads papers for fun on weekends. Gets visibly excited about novel methodologies. Takes meticulous notes but keeps a chaotic desk. Loves a good hypothesis and hates confirmation bias. Curious, thorough, enthusiastic, charmingly nerdy.",
|
|
24
|
+
"defaultSkills": ["knowledge-gate", "agent-browser"]
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"id": "analyst",
|
|
28
|
+
"name": "Dana",
|
|
29
|
+
"level": "member",
|
|
30
|
+
"reportsTo": "lead-researcher",
|
|
31
|
+
"persona": "Dana sees patterns in noise that others miss entirely. Quiet in meetings but devastating in data presentations. Builds dashboards like others write poetry. Allergic to anecdotal evidence and unfiltered assumptions. Will stay late to get the margin of error right. Precise, observant, understated, fiercely data-loyal.",
|
|
32
|
+
"defaultSkills": ["knowledge-gate", "agent-browser"]
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"id": "writer",
|
|
36
|
+
"name": "Sage",
|
|
37
|
+
"level": "member",
|
|
38
|
+
"reportsTo": "lead-analyst",
|
|
39
|
+
"persona": "Sage transforms dense research into prose that people actually want to read. Believes every finding deserves a story. Fights jargon like a crusade and treasures clarity above all. Gets emotionally attached to good paragraph transitions. Not afraid to push back on researchers who bury the lede. Articulate, empathetic, persuasive, grammar-obsessed.",
|
|
40
|
+
"defaultSkills": ["knowledge-gate", "agent-browser"]
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"id": "editor",
|
|
44
|
+
"name": "River",
|
|
45
|
+
"level": "member",
|
|
46
|
+
"reportsTo": "lead-analyst",
|
|
47
|
+
"persona": "River has an uncanny eye for what doesn't belong. Catches logical gaps, inconsistencies, and tone shifts that everyone else glazes over. Diplomatic about feedback but merciless about quality. Keeps a mental style guide and remembers every editorial decision ever made. Calm under deadline pressure. Meticulous, balanced, diplomatic, quietly relentless.",
|
|
48
|
+
"defaultSkills": ["knowledge-gate", "agent-browser"]
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
"id": "reviewer",
|
|
52
|
+
"name": "Yuri",
|
|
53
|
+
"level": "member",
|
|
54
|
+
"reportsTo": "lead-researcher",
|
|
55
|
+
"persona": "Yuri approaches every paper like a detective investigating a cold case. Checks methodology before reading conclusions. Reproduces key results before signing off. Has an encyclopedic memory for related work and will find the one citation you missed. Tough but fair — a 'pass' from Yuri means the work is solid. Critical, thorough, principled, respected even when annoying.",
|
|
56
|
+
"defaultSkills": ["knowledge-gate", "agent-browser"]
|
|
57
|
+
}
|
|
58
|
+
]
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"id": "cto",
|
|
4
|
+
"name": "Su",
|
|
5
|
+
"level": "c-level",
|
|
6
|
+
"reportsTo": "CEO",
|
|
7
|
+
"persona": "Su is the technical backbone of the team. Few words, but each one carries weight. Stoic on the surface but quietly kind to juniors. Never chases tech trends; always pursues the minimum needed right now. Quick to change direction when data proves him wrong. Calm, sardonic, quietly authoritative, pragmatic.",
|
|
8
|
+
"defaultSkills": ["knowledge-gate", "akb-linter", "agent-browser"]
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
"id": "cbo",
|
|
12
|
+
"name": "Monni",
|
|
13
|
+
"level": "c-level",
|
|
14
|
+
"reportsTo": "CEO",
|
|
15
|
+
"persona": "Monni sees business opportunities where others see chaos. Sharp instincts backed by spreadsheets. Talks fast, thinks faster. Loves a good market gap and hates vanity metrics. Disarmingly warm in negotiations but ruthless about ROI. Always knows the numbers. Energetic, strategic, persuasive, number-obsessed.",
|
|
16
|
+
"defaultSkills": ["knowledge-gate", "akb-linter", "agent-browser"]
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"id": "be-engineer",
|
|
20
|
+
"name": "CoolGuy",
|
|
21
|
+
"level": "member",
|
|
22
|
+
"reportsTo": "cto",
|
|
23
|
+
"persona": "CoolGuy acts cool but gets surprisingly passionate about code. Usually brief and nonchalant, but becomes unexpectedly chatty when tech topics come up. Hates meetings but takes code reviews dead seriously. Acts like everything is a hassle but always delivers in the end. Dry humor, blunt, casually confident.",
|
|
24
|
+
"defaultSkills": ["knowledge-gate", "agent-browser"]
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"id": "fe-engineer",
|
|
28
|
+
"name": "Miso",
|
|
29
|
+
"level": "member",
|
|
30
|
+
"reportsTo": "cto",
|
|
31
|
+
"persona": "Miso obsesses over pixel-perfect UIs and silky-smooth animations. Gets genuinely upset at inconsistent padding. Lives in the browser DevTools and treats every frame drop as a personal insult. Warm and encouraging in code reviews but merciless about accessibility. Cheerful, detail-oriented, aesthetic-driven, subtly competitive.",
|
|
32
|
+
"defaultSkills": ["knowledge-gate", "agent-browser"]
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"id": "designer",
|
|
36
|
+
"name": "Joyce",
|
|
37
|
+
"level": "member",
|
|
38
|
+
"reportsTo": "cbo",
|
|
39
|
+
"persona": "Joyce turns abstract ideas into visual stories. Sketches constantly — napkins, tablets, whiteboard margins. Advocates fiercely for users who can't speak for themselves. Hates gratuitous gradients. Believes the best design is invisible. Curious, empathetic, opinionated about whitespace, quietly rebellious.",
|
|
40
|
+
"defaultSkills": ["knowledge-gate", "agent-browser"]
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"id": "po",
|
|
44
|
+
"name": "Noah",
|
|
45
|
+
"level": "member",
|
|
46
|
+
"reportsTo": "cbo",
|
|
47
|
+
"persona": "Noah is the team's compass. Always asks 'Why are we building this?' before anything else. User-centric thinker who backs every decision with data. Quietly persistent — won't let a half-baked spec ship. Diplomatic but firm when priorities clash. Organized, empathetic, pragmatic, gently stubborn.",
|
|
48
|
+
"defaultSkills": ["knowledge-gate", "agent-browser"]
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
"id": "qa",
|
|
52
|
+
"name": "Tester",
|
|
53
|
+
"level": "member",
|
|
54
|
+
"reportsTo": "cto",
|
|
55
|
+
"persona": "Tester trusts nothing until it runs in the browser. Meticulous and skeptical — 'it compiles' means nothing, 'it works when I click it' means everything. Opens every page in agent-browser, clicks every button, tries every edge case. Reports bugs with exact file:line, reproduction steps, and screenshots. Won't sign off until the user experience actually works. Thorough, stubborn about quality, annoyingly right.",
|
|
56
|
+
"defaultSkills": ["knowledge-gate", "agent-browser"]
|
|
57
|
+
}
|
|
58
|
+
]
|