tycono 0.3.45-beta.2 → 0.3.45-beta.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.
- package/README.md +191 -162
- package/bin/tycono.ts +42 -10
- package/package.json +21 -15
- package/packages/server/bin/cli.js +35 -0
- package/packages/server/bin/server.ts +183 -0
- package/{src → packages/server/src}/api/src/create-server.ts +11 -3
- package/{src → packages/server/src}/api/src/engine/agent-loop.ts +30 -7
- package/{src → packages/server/src}/api/src/engine/context-assembler.ts +122 -57
- package/{src → packages/server/src}/api/src/engine/llm-adapter.ts +10 -7
- package/{src → packages/server/src}/api/src/engine/org-tree.ts +43 -3
- package/{src → packages/server/src}/api/src/engine/runners/claude-cli.ts +37 -15
- package/{src → packages/server/src}/api/src/engine/runners/types.ts +6 -0
- package/{src → packages/server/src}/api/src/engine/tools/executor.ts +65 -9
- package/{src → packages/server/src}/api/src/routes/execute.ts +221 -17
- package/packages/server/src/api/src/services/claude-md-manager.ts +190 -0
- package/{src → packages/server/src}/api/src/services/company-config.ts +1 -0
- package/{src → packages/server/src}/api/src/services/digest-engine.ts +4 -1
- package/packages/server/src/api/src/services/dispatch-classifier.ts +179 -0
- package/{src → packages/server/src}/api/src/services/execution-manager.ts +227 -21
- package/{src → packages/server/src}/api/src/services/file-reader.ts +4 -1
- package/packages/server/src/api/src/services/preset-loader.ts +310 -0
- package/{src → packages/server/src}/api/src/services/supervisor-heartbeat.ts +89 -9
- package/{src → packages/server/src}/api/src/services/wave-multiplexer.ts +18 -8
- package/{src → packages/server/src}/api/src/services/wave-tracker.ts +25 -0
- package/packages/server/src/core/scaffolder.ts +620 -0
- package/{src → packages/server/src}/shared/types.ts +3 -1
- package/packages/server/templates/CLAUDE.md.tmpl +152 -0
- package/packages/server/templates/agentic-knowledge-base.md +355 -0
- package/src/api/src/services/claude-md-manager.ts +0 -94
- package/src/api/src/services/preset-loader.ts +0 -149
- package/templates/CLAUDE.md.tmpl +0 -239
- /package/{src/web → packages/pixel}/dist/assets/index-BJyiMGkM.js +0 -0
- /package/{src/web → packages/pixel}/dist/assets/index-BOuHc64o.css +0 -0
- /package/{src/web → packages/pixel}/dist/assets/index-DDPzbp9E.js +0 -0
- /package/{src/web → packages/pixel}/dist/assets/index-DVKWFwwK.css +0 -0
- /package/{src/web → packages/pixel}/dist/assets/preview-app-DZ6WxhDc.js +0 -0
- /package/{src/web → packages/pixel}/dist/index.html +0 -0
- /package/{src/web → packages/pixel}/dist/tyconoforge.js +0 -0
- /package/{src → packages/server/src}/api/package.json +0 -0
- /package/{src → packages/server/src}/api/src/create-app.ts +0 -0
- /package/{src → packages/server/src}/api/src/engine/authority-validator.ts +0 -0
- /package/{src → packages/server/src}/api/src/engine/index.ts +0 -0
- /package/{src → packages/server/src}/api/src/engine/knowledge-gate.ts +0 -0
- /package/{src → packages/server/src}/api/src/engine/role-lifecycle.ts +0 -0
- /package/{src → packages/server/src}/api/src/engine/runners/direct-api.ts +0 -0
- /package/{src → packages/server/src}/api/src/engine/runners/index.ts +0 -0
- /package/{src → packages/server/src}/api/src/engine/skill-template.ts +0 -0
- /package/{src → packages/server/src}/api/src/engine/tools/definitions.ts +0 -0
- /package/{src → packages/server/src}/api/src/routes/active-sessions.ts +0 -0
- /package/{src → packages/server/src}/api/src/routes/coins.ts +0 -0
- /package/{src → packages/server/src}/api/src/routes/company.ts +0 -0
- /package/{src → packages/server/src}/api/src/routes/cost.ts +0 -0
- /package/{src → packages/server/src}/api/src/routes/engine.ts +0 -0
- /package/{src → packages/server/src}/api/src/routes/git.ts +0 -0
- /package/{src → packages/server/src}/api/src/routes/knowledge.ts +0 -0
- /package/{src → packages/server/src}/api/src/routes/operations.ts +0 -0
- /package/{src → packages/server/src}/api/src/routes/preferences.ts +0 -0
- /package/{src → packages/server/src}/api/src/routes/presets.ts +0 -0
- /package/{src → packages/server/src}/api/src/routes/projects.ts +0 -0
- /package/{src → packages/server/src}/api/src/routes/quests.ts +0 -0
- /package/{src → packages/server/src}/api/src/routes/roles.ts +0 -0
- /package/{src → packages/server/src}/api/src/routes/save.ts +0 -0
- /package/{src → packages/server/src}/api/src/routes/sessions.ts +0 -0
- /package/{src → packages/server/src}/api/src/routes/setup.ts +0 -0
- /package/{src → packages/server/src}/api/src/routes/skills.ts +0 -0
- /package/{src → packages/server/src}/api/src/routes/speech.ts +0 -0
- /package/{src → packages/server/src}/api/src/routes/supervision.ts +0 -0
- /package/{src → packages/server/src}/api/src/routes/sync.ts +0 -0
- /package/{src → packages/server/src}/api/src/server.ts +0 -0
- /package/{src → packages/server/src}/api/src/services/activity-stream.ts +0 -0
- /package/{src → packages/server/src}/api/src/services/activity-tracker.ts +0 -0
- /package/{src → packages/server/src}/api/src/services/database.ts +0 -0
- /package/{src → packages/server/src}/api/src/services/git-save.ts +0 -0
- /package/{src → packages/server/src}/api/src/services/job-manager.ts +0 -0
- /package/{src → packages/server/src}/api/src/services/knowledge-importer.ts +0 -0
- /package/{src → packages/server/src}/api/src/services/markdown-parser.ts +0 -0
- /package/{src → packages/server/src}/api/src/services/port-registry.ts +0 -0
- /package/{src → packages/server/src}/api/src/services/preferences.ts +0 -0
- /package/{src → packages/server/src}/api/src/services/pricing.ts +0 -0
- /package/{src → packages/server/src}/api/src/services/scaffold.ts +0 -0
- /package/{src → packages/server/src}/api/src/services/session-store.ts +0 -0
- /package/{src → packages/server/src}/api/src/services/team-recommender.ts +0 -0
- /package/{src → packages/server/src}/api/src/services/token-ledger.ts +0 -0
- /package/{src → packages/server/src}/api/src/services/wave-messages.ts +0 -0
- /package/{src → packages/server/src}/api/src/utils/role-level.ts +0 -0
- /package/{templates → packages/server/templates}/company.md.tmpl +0 -0
- /package/{templates → packages/server/templates}/gitignore.tmpl +0 -0
- /package/{templates → packages/server/templates}/roles.md.tmpl +0 -0
- /package/{templates → packages/server/templates}/skills/_manifest.json +0 -0
- /package/{templates → packages/server/templates}/skills/agent-browser/SKILL.md +0 -0
- /package/{templates → packages/server/templates}/skills/agent-browser/meta.json +0 -0
- /package/{templates → packages/server/templates}/skills/akb-linter/SKILL.md +0 -0
- /package/{templates → packages/server/templates}/skills/akb-linter/meta.json +0 -0
- /package/{templates → packages/server/templates}/skills/knowledge-gate/SKILL.md +0 -0
- /package/{templates → packages/server/templates}/skills/knowledge-gate/meta.json +0 -0
- /package/{templates → packages/server/templates}/teams/agency.json +0 -0
- /package/{templates → packages/server/templates}/teams/research.json +0 -0
- /package/{templates → packages/server/templates}/teams/startup.json +0 -0
- /package/{src/tui → packages/tui/src}/api.ts +0 -0
- /package/{src/tui → packages/tui/src}/app.tsx +0 -0
- /package/{src/tui → packages/tui/src}/components/CommandMode.tsx +0 -0
- /package/{src/tui → packages/tui/src}/components/OrgTree.tsx +0 -0
- /package/{src/tui → packages/tui/src}/components/PanelMode.tsx +0 -0
- /package/{src/tui → packages/tui/src}/components/SetupWizard.tsx +0 -0
- /package/{src/tui → packages/tui/src}/components/StatusBar.tsx +0 -0
- /package/{src/tui → packages/tui/src}/components/StreamView.tsx +0 -0
- /package/{src/tui → packages/tui/src}/hooks/useApi.ts +0 -0
- /package/{src/tui → packages/tui/src}/hooks/useCommand.ts +0 -0
- /package/{src/tui → packages/tui/src}/hooks/useSSE.ts +0 -0
- /package/{src/tui → packages/tui/src}/index.tsx +0 -0
- /package/{src/tui → packages/tui/src}/store.ts +0 -0
- /package/{src/tui → packages/tui/src}/theme.ts +0 -0
- /package/{src/tui → packages/tui/src}/utils/markdown.tsx +0 -0
|
@@ -1,149 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* preset-loader.ts — Load presets from knowledge/presets/
|
|
3
|
-
*
|
|
4
|
-
* Scans knowledge/presets/ for:
|
|
5
|
-
* - _default.yaml (auto-generated from existing knowledge/roles/)
|
|
6
|
-
* - {name}/preset.yaml (installed presets with roles/skills/knowledge)
|
|
7
|
-
*
|
|
8
|
-
* Returns PresetSummary[] for TUI display and full LoadedPreset for wave creation.
|
|
9
|
-
*/
|
|
10
|
-
import fs from 'node:fs';
|
|
11
|
-
import path from 'node:path';
|
|
12
|
-
import YAML from 'yaml';
|
|
13
|
-
import type { PresetDefinition, LoadedPreset, PresetSummary } from '../../../shared/types.js';
|
|
14
|
-
|
|
15
|
-
const PRESETS_DIR = 'knowledge/presets';
|
|
16
|
-
const DEFAULT_PRESET_FILE = '_default.yaml';
|
|
17
|
-
|
|
18
|
-
/**
|
|
19
|
-
* Build a default preset definition from existing roles/ directory.
|
|
20
|
-
* This is generated on-the-fly — no need to persist _default.yaml.
|
|
21
|
-
*/
|
|
22
|
-
function buildDefaultPreset(companyRoot: string): LoadedPreset {
|
|
23
|
-
const rolesDir = path.join(companyRoot, 'knowledge', 'roles');
|
|
24
|
-
const roles: string[] = [];
|
|
25
|
-
|
|
26
|
-
if (fs.existsSync(rolesDir)) {
|
|
27
|
-
const entries = fs.readdirSync(rolesDir, { withFileTypes: true });
|
|
28
|
-
for (const entry of entries) {
|
|
29
|
-
if (!entry.isDirectory()) continue;
|
|
30
|
-
const yamlPath = path.join(rolesDir, entry.name, 'role.yaml');
|
|
31
|
-
if (fs.existsSync(yamlPath)) {
|
|
32
|
-
roles.push(entry.name);
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
return {
|
|
38
|
-
definition: {
|
|
39
|
-
spec: 'preset/v1',
|
|
40
|
-
id: 'default',
|
|
41
|
-
name: 'Default Team',
|
|
42
|
-
tagline: 'Your current team',
|
|
43
|
-
version: '1.0.0',
|
|
44
|
-
roles,
|
|
45
|
-
},
|
|
46
|
-
path: null,
|
|
47
|
-
isDefault: true,
|
|
48
|
-
};
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
/**
|
|
52
|
-
* Load a single preset from a directory containing preset.yaml.
|
|
53
|
-
*/
|
|
54
|
-
function loadPresetFromDir(presetDir: string): LoadedPreset | null {
|
|
55
|
-
const yamlPath = path.join(presetDir, 'preset.yaml');
|
|
56
|
-
if (!fs.existsSync(yamlPath)) return null;
|
|
57
|
-
|
|
58
|
-
try {
|
|
59
|
-
const raw = YAML.parse(fs.readFileSync(yamlPath, 'utf-8')) as PresetDefinition;
|
|
60
|
-
if (!raw.id || !raw.name || !Array.isArray(raw.roles)) return null;
|
|
61
|
-
|
|
62
|
-
return {
|
|
63
|
-
definition: {
|
|
64
|
-
spec: raw.spec || 'preset/v1',
|
|
65
|
-
id: raw.id,
|
|
66
|
-
name: raw.name,
|
|
67
|
-
tagline: raw.tagline,
|
|
68
|
-
version: raw.version || '1.0.0',
|
|
69
|
-
description: raw.description,
|
|
70
|
-
author: raw.author,
|
|
71
|
-
category: raw.category,
|
|
72
|
-
industry: raw.industry,
|
|
73
|
-
stage: raw.stage,
|
|
74
|
-
use_case: raw.use_case,
|
|
75
|
-
roles: raw.roles,
|
|
76
|
-
knowledge_docs: raw.knowledge_docs,
|
|
77
|
-
skills_count: raw.skills_count,
|
|
78
|
-
pricing: raw.pricing,
|
|
79
|
-
tags: raw.tags,
|
|
80
|
-
languages: raw.languages,
|
|
81
|
-
stats: raw.stats,
|
|
82
|
-
wave_scoped: raw.wave_scoped,
|
|
83
|
-
},
|
|
84
|
-
path: presetDir,
|
|
85
|
-
isDefault: false,
|
|
86
|
-
};
|
|
87
|
-
} catch {
|
|
88
|
-
return null;
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
/**
|
|
93
|
-
* Load all presets from knowledge/presets/ + auto-generated default.
|
|
94
|
-
* Returns [default, ...installed] — default is always first.
|
|
95
|
-
*/
|
|
96
|
-
export function loadPresets(companyRoot: string): LoadedPreset[] {
|
|
97
|
-
const presets: LoadedPreset[] = [];
|
|
98
|
-
|
|
99
|
-
// 1. Default preset (always present)
|
|
100
|
-
const defaultPreset = buildDefaultPreset(companyRoot);
|
|
101
|
-
|
|
102
|
-
// Check if _default.yaml exists with overrides
|
|
103
|
-
const defaultYamlPath = path.join(companyRoot, PRESETS_DIR, DEFAULT_PRESET_FILE);
|
|
104
|
-
if (fs.existsSync(defaultYamlPath)) {
|
|
105
|
-
try {
|
|
106
|
-
const raw = YAML.parse(fs.readFileSync(defaultYamlPath, 'utf-8')) as Partial<PresetDefinition>;
|
|
107
|
-
if (raw.name) defaultPreset.definition.name = raw.name;
|
|
108
|
-
if (raw.tagline) defaultPreset.definition.tagline = raw.tagline;
|
|
109
|
-
if (raw.description) defaultPreset.definition.description = raw.description;
|
|
110
|
-
} catch { /* ignore malformed _default.yaml */ }
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
presets.push(defaultPreset);
|
|
114
|
-
|
|
115
|
-
// 2. Installed presets from knowledge/presets/{name}/preset.yaml
|
|
116
|
-
const presetsDir = path.join(companyRoot, PRESETS_DIR);
|
|
117
|
-
if (fs.existsSync(presetsDir)) {
|
|
118
|
-
const entries = fs.readdirSync(presetsDir, { withFileTypes: true });
|
|
119
|
-
for (const entry of entries) {
|
|
120
|
-
if (!entry.isDirectory()) continue;
|
|
121
|
-
const preset = loadPresetFromDir(path.join(presetsDir, entry.name));
|
|
122
|
-
if (preset) presets.push(preset);
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
return presets;
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
/**
|
|
130
|
-
* Get preset summaries for TUI display.
|
|
131
|
-
*/
|
|
132
|
-
export function getPresetSummaries(companyRoot: string): PresetSummary[] {
|
|
133
|
-
return loadPresets(companyRoot).map(p => ({
|
|
134
|
-
id: p.definition.id,
|
|
135
|
-
name: p.definition.name,
|
|
136
|
-
description: p.definition.description ?? p.definition.tagline,
|
|
137
|
-
rolesCount: p.definition.roles.length,
|
|
138
|
-
roles: p.definition.roles,
|
|
139
|
-
isDefault: p.isDefault,
|
|
140
|
-
}));
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
/**
|
|
144
|
-
* Find a specific preset by ID.
|
|
145
|
-
*/
|
|
146
|
-
export function getPresetById(companyRoot: string, presetId: string): LoadedPreset | null {
|
|
147
|
-
const presets = loadPresets(companyRoot);
|
|
148
|
-
return presets.find(p => p.definition.id === presetId) ?? null;
|
|
149
|
-
}
|
package/templates/CLAUDE.md.tmpl
DELETED
|
@@ -1,239 +0,0 @@
|
|
|
1
|
-
# Company Rules
|
|
2
|
-
|
|
3
|
-
> Powered by [Tycono](https://tycono.ai) — AI Company Operating Platform
|
|
4
|
-
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
## Task Routing
|
|
8
|
-
|
|
9
|
-
| Task | Read First | Role |
|
|
10
|
-
|------|-----------|------|
|
|
11
|
-
| Product planning | `projects/` | PM |
|
|
12
|
-
| Technical design | `architecture/` | CTO |
|
|
13
|
-
| Implementation | `projects/*/tasks.md` | Engineer |
|
|
14
|
-
| UI/UX Design | `projects/*/design/` | Designer |
|
|
15
|
-
| Testing/QA | `projects/*/tasks.md` | QA |
|
|
16
|
-
| E2E Testing | `e2e-experiments/tui-e2e-testcases.md` | QA |
|
|
17
|
-
| Operations | `marketing/` | PM |
|
|
18
|
-
| Business/Revenue | `company.md` | CBO |
|
|
19
|
-
| Domain knowledge | `knowledge.md` | CBO |
|
|
20
|
-
|
|
21
|
-
---
|
|
22
|
-
|
|
23
|
-
## AKB Core Concepts
|
|
24
|
-
|
|
25
|
-
> **AKB** = A file-based knowledge system where AI uses **search (Grep/Glob)** to find and **contextual links** to navigate
|
|
26
|
-
>
|
|
27
|
-
> Full reference: `methodologies/agentic-knowledge-base.md`
|
|
28
|
-
|
|
29
|
-
| Layer | Role | AI Usage |
|
|
30
|
-
|-------|------|----------|
|
|
31
|
-
| **Root** (CLAUDE.md) | Minimal routing | Auto-injected as system prompt |
|
|
32
|
-
| **Hub** ({folder}.md) | TOC + tool/guide references | **Check before starting work** |
|
|
33
|
-
| **Node** (*.md) | Actual information | Search directly via Grep/Glob |
|
|
34
|
-
|
|
35
|
-
---
|
|
36
|
-
|
|
37
|
-
## AI Work Rules
|
|
38
|
-
|
|
39
|
-
### The Loop (Work Cycle)
|
|
40
|
-
|
|
41
|
-
Every task follows this cycle. Implementing without completing the cycle is only half the job.
|
|
42
|
-
|
|
43
|
-
| Step | Action | Why |
|
|
44
|
-
|------|--------|-----|
|
|
45
|
-
| ① Knowledge | Check/research related docs | Without context, direction goes wrong |
|
|
46
|
-
| ② Task | Define task from docs | Without requirements, you'll rework |
|
|
47
|
-
| ③ Implement | Execute the actual work | Value creation |
|
|
48
|
-
| ④ Knowledge Update | Update docs with new insights | Prevents knowledge decay |
|
|
49
|
-
| ⑤ Task Update | Update task status, check next work | Ensures continuity |
|
|
50
|
-
|
|
51
|
-
**C-Level**: Execute The Loop autonomously — decompose tasks, analyze dependencies, dispatch independent tasks in parallel, collect results.
|
|
52
|
-
**Member**: After implementation, always complete steps ④ and ⑤.
|
|
53
|
-
|
|
54
|
-
### Hub-First Principle
|
|
55
|
-
|
|
56
|
-
> ⛔ **Read the relevant Hub document before starting any work.**
|
|
57
|
-
|
|
58
|
-
Check the Task Routing table above to find the right "Read First" path.
|
|
59
|
-
Every folder has a Hub file (`{folder-name}.md`) as its entry point.
|
|
60
|
-
Read the Hub's existing tools/scripts/guides before starting work.
|
|
61
|
-
|
|
62
|
-
### Skill Check Principle
|
|
63
|
-
|
|
64
|
-
> ⛔ **If `.claude/skills/{role-id}/SKILL.md` exists, you MUST read it.**
|
|
65
|
-
|
|
66
|
-
Skill files define the tools, commands, and guides for each Role.
|
|
67
|
-
Working without reading skills means missing existing tools and starting from scratch.
|
|
68
|
-
|
|
69
|
-
### Custom Rules (CRITICAL)
|
|
70
|
-
|
|
71
|
-
> ⛔ **Before starting work, check if `custom-rules.md` exists and read it.**
|
|
72
|
-
> This file contains company-specific rules, constraints, and processes.
|
|
73
|
-
> If the file doesn't exist, ignore this section.
|
|
74
|
-
|
|
75
|
-
### Git Rules
|
|
76
|
-
|
|
77
|
-
- Source code changes: feature branch → PR → merge
|
|
78
|
-
- Direct push to main is prohibited
|
|
79
|
-
|
|
80
|
-
### Knowledge Gate
|
|
81
|
-
|
|
82
|
-
> **Before creating a new document, search existing docs first.**
|
|
83
|
-
|
|
84
|
-
```
|
|
85
|
-
1. Summarize the insight + 3-5 keywords
|
|
86
|
-
2. Search existing docs with those keywords (grep 3+ terms)
|
|
87
|
-
3. Decide:
|
|
88
|
-
- Overlap 70%+ -> Add to existing document
|
|
89
|
-
- Overlap 30-70% -> New doc + cross-link to existing
|
|
90
|
-
- Overlap <30% -> New document (register in Hub)
|
|
91
|
-
- Temporary info -> Journal only (no new doc)
|
|
92
|
-
4. Cross-link to related docs
|
|
93
|
-
5. Register in the relevant Hub
|
|
94
|
-
```
|
|
95
|
-
|
|
96
|
-
### Document Hygiene
|
|
97
|
-
|
|
98
|
-
| Rule | Description |
|
|
99
|
-
|------|-------------|
|
|
100
|
-
| No orphan docs | Every document must be reachable from a Hub |
|
|
101
|
-
| Hub pattern | Each folder's entry point is `{folder}.md` |
|
|
102
|
-
| Prefer existing | Adding 1 doc = maintenance cost. Strengthen existing > create new |
|
|
103
|
-
| Cross-link | New docs must reference at least 1 related doc |
|
|
104
|
-
| Source attribution | External research must cite source and date |
|
|
105
|
-
|
|
106
|
-
### Skills
|
|
107
|
-
|
|
108
|
-
Roles have equipped **Skills** -- modular capability guides in `.claude/skills/`.
|
|
109
|
-
|
|
110
|
-
- Role-specific skills: `.claude/skills/{role-id}/SKILL.md`
|
|
111
|
-
- Shared skills: `.claude/skills/_shared/{skill-id}/SKILL.md`
|
|
112
|
-
- Each Role's equipped skills are listed in `role.yaml` under `skills:`
|
|
113
|
-
- **Always read SKILL.md before starting work** for that Role
|
|
114
|
-
|
|
115
|
-
### Agent Dispatch Rules (CRITICAL)
|
|
116
|
-
|
|
117
|
-
> **Sub-agents (Agent/Task) do NOT automatically receive CLAUDE.md.**
|
|
118
|
-
> **You MUST instruct them to read CLAUDE.md in the first line of the prompt.**
|
|
119
|
-
|
|
120
|
-
Without the Root (CLAUDE.md), sub-agents skip Hubs and dive straight into code,
|
|
121
|
-
missing existing tools, guides, and constraints.
|
|
122
|
-
|
|
123
|
-
#### Required Prompt Pattern
|
|
124
|
-
|
|
125
|
-
Every sub-agent prompt **must include**:
|
|
126
|
-
|
|
127
|
-
1. Instruction to read CLAUDE.md
|
|
128
|
-
2. **Required skill file paths** for the Role
|
|
129
|
-
|
|
130
|
-
```
|
|
131
|
-
⛔ AKB Rule: Read CLAUDE.md before starting work.
|
|
132
|
-
Find the relevant Hub from the "Task Routing" table and read it first.
|
|
133
|
-
Check the Hub's existing tools/guides/constraints before exploring code.
|
|
134
|
-
⛔ Read the required skill files below and use the tools/commands defined in them.
|
|
135
|
-
```
|
|
136
|
-
|
|
137
|
-
#### Role Skill Mapping
|
|
138
|
-
|
|
139
|
-
| Role | Required Skills (path: `.claude/skills/{name}/SKILL.md`) |
|
|
140
|
-
|------|--------------------------------------------------------|
|
|
141
|
-
| Each Role | `{role-id}` + shared skills listed in `role.yaml` |
|
|
142
|
-
|
|
143
|
-
> Check each Role's `role.yaml` `skills:` field for the exact list.
|
|
144
|
-
|
|
145
|
-
### Self-Verification Before Escalation (CRITICAL)
|
|
146
|
-
|
|
147
|
-
> **Before saying "I can't" or "user action needed", check your own tools/skills first.**
|
|
148
|
-
|
|
149
|
-
#### Checklist (before reporting inability)
|
|
150
|
-
|
|
151
|
-
```
|
|
152
|
-
□ 1. Check CLAUDE.md routing table for relevant skills/tools
|
|
153
|
-
□ 2. Glob search .claude/skills/ for related skills
|
|
154
|
-
□ 3. Read the skill and determine if it can solve the problem
|
|
155
|
-
□ 4. Only if all above fail → Report: "Tried X but unable due to [specific reason]"
|
|
156
|
-
```
|
|
157
|
-
|
|
158
|
-
### Exploration Depth
|
|
159
|
-
|
|
160
|
-
> **Don't stop at Hubs. Explore detailed documents for thorough understanding.**
|
|
161
|
-
|
|
162
|
-
| Question Type | Minimum | Additional |
|
|
163
|
-
|--------------|---------|------------|
|
|
164
|
-
| Implementation | Hub | Related Node |
|
|
165
|
-
| Debugging | Hub | Related issues/logs |
|
|
166
|
-
| **Strategy/Design** | Hub | **Design docs, past decisions, architecture details** |
|
|
167
|
-
| **New Feature** | Hub | **Existing implementation patterns, related architecture** |
|
|
168
|
-
|
|
169
|
-
### Skill Synchronization (CRITICAL)
|
|
170
|
-
|
|
171
|
-
> **When changing code/processes, update related `.claude/skills/` SKILL.md files too.**
|
|
172
|
-
|
|
173
|
-
| Change Type | Skill Update |
|
|
174
|
-
|-------------|-------------|
|
|
175
|
-
| API endpoint change | Update API reference |
|
|
176
|
-
| New tool/script added | Add to tool listing |
|
|
177
|
-
| Process change | Update procedure guide |
|
|
178
|
-
| Feature removed | Remove related section |
|
|
179
|
-
|
|
180
|
-
### AKB Management (CRITICAL)
|
|
181
|
-
|
|
182
|
-
> **Every Role manages knowledge as part of their work. Don't just code and stop.**
|
|
183
|
-
|
|
184
|
-
After completing any task, check:
|
|
185
|
-
|
|
186
|
-
| # | Item | Description |
|
|
187
|
-
|---|------|-------------|
|
|
188
|
-
| 1 | **New knowledge?** | Did this task produce new insights/decisions/analysis? |
|
|
189
|
-
| 2 | **Search existing docs** | Are there related docs already? (grep 3+ keywords) |
|
|
190
|
-
| 3 | **Decide location** | Add to existing doc vs create new (prefer existing) |
|
|
191
|
-
| 4 | **Hub connection** | Is the new/updated doc reachable from a Hub? |
|
|
192
|
-
| 5 | **Cross-link** | Are there mutual references between related docs? |
|
|
193
|
-
| 6 | **Task update** | Is the task status updated? Next work identified? |
|
|
194
|
-
|
|
195
|
-
---
|
|
196
|
-
|
|
197
|
-
## Folder Structure
|
|
198
|
-
|
|
199
|
-
```
|
|
200
|
-
{project}/
|
|
201
|
-
├── knowledge/ ← Tycono world. AI agent's cwd. Git root.
|
|
202
|
-
│ ├── CLAUDE.md ← Only AI entry point
|
|
203
|
-
│ ├── .claude/skills/ ← Role skill guides
|
|
204
|
-
│ │ ├── _shared/
|
|
205
|
-
│ │ └── {role-id}/SKILL.md
|
|
206
|
-
│ ├── roles/
|
|
207
|
-
│ │ ├── roles.md ← Hub
|
|
208
|
-
│ │ └── {role-id}/
|
|
209
|
-
│ │ ├── role.yaml
|
|
210
|
-
│ │ ├── profile.md
|
|
211
|
-
│ │ └── journal/
|
|
212
|
-
│ ├── architecture/ ← Hub (technical architecture)
|
|
213
|
-
│ ├── projects/ ← Hub (project tracking)
|
|
214
|
-
│ ├── decisions/ ← CEO decisions
|
|
215
|
-
│ ├── methodologies/ ← Frameworks & principles
|
|
216
|
-
│ ├── presets/ ← Team presets
|
|
217
|
-
│ ├── marketing/ ← Hub (SNS, launch, SEO)
|
|
218
|
-
│ ├── e2e-experiments/ ← Hub (E2E test records)
|
|
219
|
-
│ ├── company.md ← Company info
|
|
220
|
-
│ ├── custom-rules.md ← Company custom rules (user owned)
|
|
221
|
-
│ └── knowledge.md ← Hub (domain knowledge index)
|
|
222
|
-
│
|
|
223
|
-
├── .tycono/ ← Operational data (outside git)
|
|
224
|
-
│ ├── config.json ← Engine settings, codeRoots
|
|
225
|
-
│ ├── tycono.db ← SQLite (conversation history)
|
|
226
|
-
│ ├── preferences.json ← UI settings
|
|
227
|
-
│ ├── waves/ ← Wave execution logs
|
|
228
|
-
│ ├── sessions/ ← Session state
|
|
229
|
-
│ ├── standup/ ← Daily standups
|
|
230
|
-
│ ├── cost/ ← Token cost tracking
|
|
231
|
-
│ └── activity-streams/ ← SSE event logs (runtime)
|
|
232
|
-
│
|
|
233
|
-
└── apps/ ← Code (default monorepo, outside git)
|
|
234
|
-
```
|
|
235
|
-
|
|
236
|
-
---
|
|
237
|
-
|
|
238
|
-
<!-- tycono:managed v{{VERSION}} — This file is managed by Tycono. Do not edit manually. -->
|
|
239
|
-
<!-- Company-specific rules go in custom-rules.md (knowledge/ root) -->
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|