@archznn/crewloop-skills 0.6.0 → 0.7.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/README.md +4 -16
- package/package.json +1 -2
- package/packages/cli/dist/agents.js +1 -1
- package/packages/cli/dist/agents.js.map +1 -1
- package/packages/cli/dist/cli.d.ts.map +1 -1
- package/packages/cli/dist/cli.js +2 -30
- package/packages/cli/dist/cli.js.map +1 -1
- package/packages/cli/dist/hooks.d.ts +6 -4
- package/packages/cli/dist/hooks.d.ts.map +1 -1
- package/packages/cli/dist/hooks.js +250 -98
- package/packages/cli/dist/hooks.js.map +1 -1
- package/packages/cli/dist/tests/hooks.test.js +245 -33
- package/packages/cli/dist/tests/hooks.test.js.map +1 -1
- package/references/conventions.md +1 -10
- package/references/workflow.md +1 -1
- package/servers/dashboard/README.md +55 -1
- package/servers/dashboard/dist/adapters/agy.d.ts +19 -0
- package/servers/dashboard/dist/adapters/agy.d.ts.map +1 -0
- package/servers/dashboard/dist/adapters/agy.js +108 -0
- package/servers/dashboard/dist/adapters/agy.js.map +1 -0
- package/servers/dashboard/dist/adapters/codex.d.ts.map +1 -1
- package/servers/dashboard/dist/adapters/codex.js +2 -0
- package/servers/dashboard/dist/adapters/codex.js.map +1 -1
- package/servers/dashboard/dist/adapters/kimi.d.ts +1 -1
- package/servers/dashboard/dist/adapters/kimi.d.ts.map +1 -1
- package/servers/dashboard/dist/adapters/kimi.js +9 -0
- package/servers/dashboard/dist/adapters/kimi.js.map +1 -1
- package/servers/dashboard/dist/adapters/shim.d.ts +1 -1
- package/servers/dashboard/dist/adapters/shim.d.ts.map +1 -1
- package/servers/dashboard/dist/adapters/shim.js +32 -11
- package/servers/dashboard/dist/adapters/shim.js.map +1 -1
- package/servers/dashboard/dist/adapters/shim.test.js +46 -4
- package/servers/dashboard/dist/adapters/shim.test.js.map +1 -1
- package/servers/dashboard/dist/lib/constants.d.ts +5 -0
- package/servers/dashboard/dist/lib/constants.d.ts.map +1 -0
- package/servers/dashboard/dist/lib/constants.js +46 -0
- package/servers/dashboard/dist/lib/constants.js.map +1 -0
- package/servers/dashboard/dist/lib/format.d.ts +6 -0
- package/servers/dashboard/dist/lib/format.d.ts.map +1 -0
- package/servers/dashboard/dist/lib/format.js +52 -0
- package/servers/dashboard/dist/lib/format.js.map +1 -0
- package/servers/dashboard/dist/lib/graph.d.ts +22 -0
- package/servers/dashboard/dist/lib/graph.d.ts.map +1 -0
- package/servers/dashboard/dist/lib/graph.js +45 -0
- package/servers/dashboard/dist/lib/graph.js.map +1 -0
- package/servers/dashboard/dist/lib/invocations.d.ts +32 -0
- package/servers/dashboard/dist/lib/invocations.d.ts.map +1 -0
- package/servers/dashboard/dist/lib/invocations.js +135 -0
- package/servers/dashboard/dist/lib/invocations.js.map +1 -0
- package/servers/dashboard/dist/lib/invocations.test.d.ts +2 -0
- package/servers/dashboard/dist/lib/invocations.test.d.ts.map +1 -0
- package/servers/dashboard/dist/lib/invocations.test.js +68 -0
- package/servers/dashboard/dist/lib/invocations.test.js.map +1 -0
- package/servers/dashboard/dist/lib/paths.d.ts +2 -0
- package/servers/dashboard/dist/lib/paths.d.ts.map +1 -0
- package/servers/dashboard/dist/lib/paths.js +40 -0
- package/servers/dashboard/dist/lib/paths.js.map +1 -0
- package/servers/dashboard/dist/presenter.d.ts.map +1 -1
- package/servers/dashboard/dist/presenter.js +2 -0
- package/servers/dashboard/dist/presenter.js.map +1 -1
- package/servers/dashboard/dist/public/assets/index-DjmMKbPN.css +1 -0
- package/servers/dashboard/dist/public/assets/index-DzOqMleZ.js +5323 -0
- package/servers/dashboard/dist/public/assets/index-DzOqMleZ.js.map +1 -0
- package/servers/dashboard/dist/public/index.html +16 -0
- package/servers/dashboard/dist/server.d.ts.map +1 -1
- package/servers/dashboard/dist/server.js +5 -1
- package/servers/dashboard/dist/server.js.map +1 -1
- package/servers/dashboard/dist/skills/infer.d.ts.map +1 -1
- package/servers/dashboard/dist/skills/infer.js +0 -6
- package/servers/dashboard/dist/skills/infer.js.map +1 -1
- package/servers/dashboard/dist/skills/infer.test.js +10 -3
- package/servers/dashboard/dist/skills/infer.test.js.map +1 -1
- package/servers/dashboard/dist/skills/mapping.d.ts +0 -3
- package/servers/dashboard/dist/skills/mapping.d.ts.map +1 -1
- package/servers/dashboard/dist/skills/mapping.js +0 -18
- package/servers/dashboard/dist/skills/mapping.js.map +1 -1
- package/servers/dashboard/dist/skills/registry.d.ts.map +1 -1
- package/servers/dashboard/dist/skills/registry.js +0 -1
- package/servers/dashboard/dist/skills/registry.js.map +1 -1
- package/servers/dashboard/dist/tests/adapters.test.d.ts +2 -0
- package/servers/dashboard/dist/tests/adapters.test.d.ts.map +1 -0
- package/servers/dashboard/dist/tests/adapters.test.js +180 -0
- package/servers/dashboard/dist/tests/adapters.test.js.map +1 -0
- package/servers/dashboard/dist/tests/lib-helpers.test.d.ts +2 -0
- package/servers/dashboard/dist/tests/lib-helpers.test.d.ts.map +1 -0
- package/servers/dashboard/dist/tests/lib-helpers.test.js +123 -0
- package/servers/dashboard/dist/tests/lib-helpers.test.js.map +1 -0
- package/servers/dashboard/dist/tests/shim.test.js +88 -2
- package/servers/dashboard/dist/tests/shim.test.js.map +1 -1
- package/servers/dashboard/dist/types.d.ts +5 -2
- package/servers/dashboard/dist/types.d.ts.map +1 -1
- package/servers/dashboard/package.json +22 -5
- package/servers/dashboard/src/adapters/agy.ts +136 -0
- package/servers/dashboard/src/adapters/codex.ts +2 -0
- package/servers/dashboard/src/adapters/kimi.ts +11 -1
- package/servers/dashboard/src/adapters/shim.test.ts +57 -4
- package/servers/dashboard/src/adapters/shim.ts +31 -11
- package/servers/dashboard/src/lib/constants.ts +44 -0
- package/servers/dashboard/src/lib/format.ts +44 -0
- package/servers/dashboard/src/lib/graph.ts +69 -0
- package/servers/dashboard/src/lib/invocations.test.ts +70 -0
- package/servers/dashboard/src/lib/invocations.ts +172 -0
- package/servers/dashboard/src/lib/paths.ts +35 -0
- package/servers/dashboard/src/presenter.ts +2 -0
- package/servers/dashboard/src/server.ts +5 -1
- package/servers/dashboard/src/skills/infer.test.ts +11 -3
- package/servers/dashboard/src/skills/infer.ts +1 -8
- package/servers/dashboard/src/skills/mapping.ts +0 -20
- package/servers/dashboard/src/skills/registry.ts +0 -1
- package/servers/dashboard/src/tests/adapters.test.ts +198 -0
- package/servers/dashboard/src/tests/lib-helpers.test.ts +133 -0
- package/servers/dashboard/src/tests/shim.test.ts +110 -2
- package/servers/dashboard/src/types.ts +5 -3
- package/servers/dashboard/ui/index.html +15 -0
- package/servers/dashboard/ui/postcss.config.js +6 -0
- package/servers/dashboard/ui/src/App.tsx +360 -0
- package/servers/dashboard/ui/src/components/ActiveSkillPanel.tsx +69 -0
- package/servers/dashboard/ui/src/components/ActivityGraph.tsx +74 -0
- package/servers/dashboard/ui/src/components/CommandPalette.tsx +200 -0
- package/servers/dashboard/ui/src/components/FileActivity.tsx +20 -0
- package/servers/dashboard/ui/src/components/FileDiff.tsx +68 -0
- package/servers/dashboard/ui/src/components/FileList.tsx +64 -0
- package/servers/dashboard/ui/src/components/FilterBar.tsx +208 -0
- package/servers/dashboard/ui/src/components/Network3D.tsx +178 -0
- package/servers/dashboard/ui/src/components/SessionSelector.tsx +95 -0
- package/servers/dashboard/ui/src/components/Sidebar.tsx +110 -0
- package/servers/dashboard/ui/src/components/TelemetryPanel.tsx +57 -0
- package/servers/dashboard/ui/src/components/Timeline.tsx +57 -0
- package/servers/dashboard/ui/src/components/TimelineRow.tsx +112 -0
- package/servers/dashboard/ui/src/components/TopBar.tsx +116 -0
- package/servers/dashboard/ui/src/components/ViewHeader.tsx +19 -0
- package/servers/dashboard/ui/src/components/ui/Icon.tsx +105 -0
- package/servers/dashboard/ui/src/components/ui/StatusBadge.tsx +19 -0
- package/servers/dashboard/ui/src/components/views/FilesView.tsx +23 -0
- package/servers/dashboard/ui/src/components/views/NetworkView.tsx +20 -0
- package/servers/dashboard/ui/src/components/views/Overview.tsx +135 -0
- package/servers/dashboard/ui/src/components/views/SessionsView.tsx +84 -0
- package/servers/dashboard/ui/src/components/views/SettingsView.tsx +138 -0
- package/servers/dashboard/ui/src/components/views/SkillsView.tsx +92 -0
- package/servers/dashboard/ui/src/components/views/TimelineView.tsx +46 -0
- package/servers/dashboard/ui/src/contexts/FilterContext.tsx +41 -0
- package/servers/dashboard/ui/src/contexts/PinnedSessionsContext.tsx +80 -0
- package/servers/dashboard/ui/src/contexts/SettingsContext.tsx +60 -0
- package/servers/dashboard/ui/src/hooks/useCommandPalette.ts +36 -0
- package/servers/dashboard/ui/src/hooks/useKeyboardShortcut.ts +38 -0
- package/servers/dashboard/ui/src/hooks/useNow.ts +12 -0
- package/servers/dashboard/ui/src/hooks/useReducedMotion.ts +15 -0
- package/servers/dashboard/ui/src/hooks/useSessions.ts +64 -0
- package/servers/dashboard/ui/src/hooks/useTheme.ts +30 -0
- package/servers/dashboard/ui/src/hooks/useViewport.ts +19 -0
- package/servers/dashboard/ui/src/hooks/useWebSocket.ts +118 -0
- package/servers/dashboard/ui/src/lib/export.test.ts +33 -0
- package/servers/dashboard/ui/src/lib/export.ts +39 -0
- package/servers/dashboard/ui/src/lib/filter.test.ts +95 -0
- package/servers/dashboard/ui/src/lib/filter.ts +178 -0
- package/servers/dashboard/ui/src/lib/format.test.ts +25 -0
- package/servers/dashboard/ui/src/lib/search.test.ts +52 -0
- package/servers/dashboard/ui/src/lib/search.ts +60 -0
- package/servers/dashboard/ui/src/lib/settings.test.ts +50 -0
- package/servers/dashboard/ui/src/lib/settings.ts +56 -0
- package/servers/dashboard/ui/src/lib/types.ts +124 -0
- package/servers/dashboard/ui/src/main.tsx +19 -0
- package/servers/dashboard/ui/src/styles/index.css +155 -0
- package/servers/dashboard/ui/tailwind.config.js +45 -0
- package/servers/dashboard/ui/tsconfig.json +33 -0
- package/servers/dashboard/ui/tsconfig.node.json +10 -0
- package/servers/dashboard/ui/vite.config.ts +37 -0
- package/servers/dashboard/ui/vitest.config.ts +8 -0
- package/skills/accessibility-auditor/SKILL.md +0 -20
- package/skills/architect/SKILL.md +0 -45
- package/skills/designer/SKILL.md +0 -30
- package/skills/docs-writer/SKILL.md +0 -13
- package/skills/engineer/SKILL.md +0 -30
- package/skills/maintainer/SKILL.md +0 -20
- package/skills/orchestrator/SKILL.md +0 -13
- package/skills/product-manager/SKILL.md +0 -20
- package/skills/researcher/SKILL.md +0 -20
- package/skills/reviewer/SKILL.md +0 -30
- package/skills/security-guard/SKILL.md +0 -20
- package/skills/shipper/SKILL.md +0 -33
- package/skills/tester/SKILL.md +0 -20
- package/packages/cli/dist/mcp.d.ts +0 -28
- package/packages/cli/dist/mcp.d.ts.map +0 -1
- package/packages/cli/dist/mcp.js +0 -148
- package/packages/cli/dist/mcp.js.map +0 -1
- package/packages/cli/dist/tests/mcp.test.d.ts +0 -2
- package/packages/cli/dist/tests/mcp.test.d.ts.map +0 -1
- package/packages/cli/dist/tests/mcp.test.js +0 -232
- package/packages/cli/dist/tests/mcp.test.js.map +0 -1
- package/references/obsidian-mcp-usage.md +0 -190
- package/servers/dashboard/public/app.js +0 -516
- package/servers/dashboard/public/index.html +0 -96
- package/servers/dashboard/public/styles.css +0 -819
- package/servers/obsidian-mcp/README.md +0 -82
- package/servers/obsidian-mcp/pyproject.toml +0 -32
- package/servers/obsidian-mcp/src/obsidian_mcp/__init__.py +0 -0
- package/servers/obsidian-mcp/src/obsidian_mcp/config.py +0 -47
- package/servers/obsidian-mcp/src/obsidian_mcp/indexer/__init__.py +0 -0
- package/servers/obsidian-mcp/src/obsidian_mcp/indexer/embeddings.py +0 -105
- package/servers/obsidian-mcp/src/obsidian_mcp/indexer/indexer.py +0 -79
- package/servers/obsidian-mcp/src/obsidian_mcp/indexer/store.py +0 -141
- package/servers/obsidian-mcp/src/obsidian_mcp/indexer/sync.py +0 -37
- package/servers/obsidian-mcp/src/obsidian_mcp/learning/__init__.py +0 -0
- package/servers/obsidian-mcp/src/obsidian_mcp/learning/detector.py +0 -66
- package/servers/obsidian-mcp/src/obsidian_mcp/learning/note_generator.py +0 -40
- package/servers/obsidian-mcp/src/obsidian_mcp/main.py +0 -4
- package/servers/obsidian-mcp/src/obsidian_mcp/models.py +0 -42
- package/servers/obsidian-mcp/src/obsidian_mcp/privacy/__init__.py +0 -0
- package/servers/obsidian-mcp/src/obsidian_mcp/privacy/filter.py +0 -68
- package/servers/obsidian-mcp/src/obsidian_mcp/rag/__init__.py +0 -0
- package/servers/obsidian-mcp/src/obsidian_mcp/rag/engine.py +0 -50
- package/servers/obsidian-mcp/src/obsidian_mcp/rag/graph_search.py +0 -55
- package/servers/obsidian-mcp/src/obsidian_mcp/rag/text_search.py +0 -37
- package/servers/obsidian-mcp/src/obsidian_mcp/rag/vector_search.py +0 -118
- package/servers/obsidian-mcp/src/obsidian_mcp/server.py +0 -61
- package/servers/obsidian-mcp/src/obsidian_mcp/tools/__init__.py +0 -0
- package/servers/obsidian-mcp/src/obsidian_mcp/tools/create.py +0 -43
- package/servers/obsidian-mcp/src/obsidian_mcp/tools/delete.py +0 -16
- package/servers/obsidian-mcp/src/obsidian_mcp/tools/learn.py +0 -42
- package/servers/obsidian-mcp/src/obsidian_mcp/tools/list.py +0 -16
- package/servers/obsidian-mcp/src/obsidian_mcp/tools/read.py +0 -15
- package/servers/obsidian-mcp/src/obsidian_mcp/tools/registry.py +0 -130
- package/servers/obsidian-mcp/src/obsidian_mcp/tools/related.py +0 -20
- package/servers/obsidian-mcp/src/obsidian_mcp/tools/search.py +0 -26
- package/servers/obsidian-mcp/src/obsidian_mcp/tools/sync.py +0 -22
- package/servers/obsidian-mcp/src/obsidian_mcp/tools/update.py +0 -34
- package/servers/obsidian-mcp/src/obsidian_mcp/vault/__init__.py +0 -0
- package/servers/obsidian-mcp/src/obsidian_mcp/vault/parser.py +0 -82
- package/servers/obsidian-mcp/src/obsidian_mcp/vault/repository.py +0 -68
- package/servers/obsidian-mcp/src/obsidian_mcp/vault/writer.py +0 -61
- package/servers/obsidian-mcp/tests/conftest.py +0 -39
- package/servers/obsidian-mcp/tests/test_async_tools.py +0 -87
- package/servers/obsidian-mcp/tests/test_edge_cases.py +0 -59
- package/servers/obsidian-mcp/tests/test_indexer.py +0 -27
- package/servers/obsidian-mcp/tests/test_integration.py +0 -90
- package/servers/obsidian-mcp/tests/test_learning.py +0 -34
- package/servers/obsidian-mcp/tests/test_privacy.py +0 -31
- package/servers/obsidian-mcp/tests/test_privacy_config.py +0 -44
- package/servers/obsidian-mcp/tests/test_rag.py +0 -64
- package/servers/obsidian-mcp/tests/test_read_raw.py +0 -37
- package/servers/obsidian-mcp/tests/test_tfidf_fallback.py +0 -54
- package/servers/obsidian-mcp/tests/test_tools.py +0 -108
- package/servers/obsidian-mcp/tests/test_vault.py +0 -103
- package/servers/obsidian-mcp/tests/test_writer.py +0 -139
- package/skills/obsidian-second-brain/SKILL.md +0 -298
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
@tailwind base;
|
|
2
|
+
@tailwind components;
|
|
3
|
+
@tailwind utilities;
|
|
4
|
+
|
|
5
|
+
:root {
|
|
6
|
+
--bg-base: #070708;
|
|
7
|
+
--bg-surface: #0e0e10;
|
|
8
|
+
--bg-elevated: #16161a;
|
|
9
|
+
--bg-inset: #050506;
|
|
10
|
+
--border-default: #27272a;
|
|
11
|
+
--border-strong: #3f3f46;
|
|
12
|
+
--text-primary: #f4f4f5;
|
|
13
|
+
--text-secondary: #a1a1aa;
|
|
14
|
+
--text-muted: #52525b;
|
|
15
|
+
--accent: #f59e0b;
|
|
16
|
+
--accent-dim: #78350f;
|
|
17
|
+
--success: #22c55e;
|
|
18
|
+
--error: #ef4444;
|
|
19
|
+
--warning: #eab308;
|
|
20
|
+
--running: #38bdf8;
|
|
21
|
+
--overlay: rgba(0, 0, 0, 0.6);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
html.light {
|
|
25
|
+
--bg-base: #f4f4f5;
|
|
26
|
+
--bg-surface: #ffffff;
|
|
27
|
+
--bg-elevated: #e4e4e7;
|
|
28
|
+
--bg-inset: #d4d4d8;
|
|
29
|
+
--border-default: #d4d4d8;
|
|
30
|
+
--border-strong: #a1a1aa;
|
|
31
|
+
--text-primary: #18181b;
|
|
32
|
+
--text-secondary: #52525b;
|
|
33
|
+
--text-muted: #a1a1aa;
|
|
34
|
+
--accent: #d97706;
|
|
35
|
+
--accent-dim: #fcd34d;
|
|
36
|
+
--success: #16a34a;
|
|
37
|
+
--error: #dc2626;
|
|
38
|
+
--warning: #ca8a04;
|
|
39
|
+
--running: #0284c7;
|
|
40
|
+
--overlay: rgba(0, 0, 0, 0.35);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
html,
|
|
44
|
+
body,
|
|
45
|
+
#root {
|
|
46
|
+
height: 100%;
|
|
47
|
+
background: var(--bg-base);
|
|
48
|
+
color: var(--text-primary);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
body {
|
|
52
|
+
font-family: 'JetBrains Mono', ui-monospace, monospace;
|
|
53
|
+
font-size: 14px;
|
|
54
|
+
line-height: 1.5;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
@layer components {
|
|
58
|
+
.panel {
|
|
59
|
+
@apply bg-surface border border-border-default rounded overflow-hidden relative;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
@layer utilities {
|
|
64
|
+
.font-display {
|
|
65
|
+
font-family: 'Teko', sans-serif;
|
|
66
|
+
}
|
|
67
|
+
.font-mono {
|
|
68
|
+
font-family: 'JetBrains Mono', ui-monospace, monospace;
|
|
69
|
+
}
|
|
70
|
+
.tabular {
|
|
71
|
+
font-variant-numeric: tabular-nums;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/* Density */
|
|
76
|
+
.density-compact .sidebar-item {
|
|
77
|
+
height: 2rem;
|
|
78
|
+
padding: 0.375rem 0.625rem;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
.density-compact .timeline-row {
|
|
82
|
+
padding-top: 0.25rem;
|
|
83
|
+
padding-bottom: 0.25rem;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
.density-compact .file-list-item {
|
|
87
|
+
padding: 0.5rem;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
.density-compact .filter-bar {
|
|
91
|
+
padding-top: 0.5rem;
|
|
92
|
+
padding-bottom: 0.5rem;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
/* Animations */
|
|
96
|
+
@keyframes fade-in {
|
|
97
|
+
from {
|
|
98
|
+
opacity: 0;
|
|
99
|
+
}
|
|
100
|
+
to {
|
|
101
|
+
opacity: 1;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
@keyframes modal-in {
|
|
106
|
+
from {
|
|
107
|
+
opacity: 0;
|
|
108
|
+
transform: scale(0.96) translateY(8px);
|
|
109
|
+
}
|
|
110
|
+
to {
|
|
111
|
+
opacity: 1;
|
|
112
|
+
transform: scale(1) translateY(0);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
.animate-fade-in {
|
|
117
|
+
animation: fade-in 150ms ease-out;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
.animate-modal-in {
|
|
121
|
+
animation: modal-in 200ms ease-out;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
/* Focus rings */
|
|
125
|
+
*:focus-visible {
|
|
126
|
+
outline: 2px solid var(--accent);
|
|
127
|
+
outline-offset: 2px;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
/* Scrollbars */
|
|
131
|
+
::-webkit-scrollbar {
|
|
132
|
+
width: 8px;
|
|
133
|
+
height: 8px;
|
|
134
|
+
}
|
|
135
|
+
::-webkit-scrollbar-track {
|
|
136
|
+
background: transparent;
|
|
137
|
+
}
|
|
138
|
+
::-webkit-scrollbar-thumb {
|
|
139
|
+
background: var(--border-default);
|
|
140
|
+
border-radius: 4px;
|
|
141
|
+
}
|
|
142
|
+
::-webkit-scrollbar-thumb:hover {
|
|
143
|
+
background: var(--border-strong);
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
/* Reduced motion */
|
|
147
|
+
@media (prefers-reduced-motion: reduce) {
|
|
148
|
+
*,
|
|
149
|
+
*::before,
|
|
150
|
+
*::after {
|
|
151
|
+
animation-duration: 0.01ms !important;
|
|
152
|
+
animation-iteration-count: 1 !important;
|
|
153
|
+
transition-duration: 0.01ms !important;
|
|
154
|
+
}
|
|
155
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/** @type {import('tailwindcss').Config} */
|
|
2
|
+
module.exports = {
|
|
3
|
+
darkMode: 'class',
|
|
4
|
+
content: ['./index.html', './src/**/*.{js,ts,jsx,tsx}'],
|
|
5
|
+
theme: {
|
|
6
|
+
extend: {
|
|
7
|
+
colors: {
|
|
8
|
+
base: 'var(--bg-base)',
|
|
9
|
+
surface: 'var(--bg-surface)',
|
|
10
|
+
elevated: 'var(--bg-elevated)',
|
|
11
|
+
inset: 'var(--bg-inset)',
|
|
12
|
+
'border-default': 'var(--border-default)',
|
|
13
|
+
'border-strong': 'var(--border-strong)',
|
|
14
|
+
'text-primary': 'var(--text-primary)',
|
|
15
|
+
'text-secondary': 'var(--text-secondary)',
|
|
16
|
+
'text-muted': 'var(--text-muted)',
|
|
17
|
+
accent: 'var(--accent)',
|
|
18
|
+
'accent-dim': 'var(--accent-dim)',
|
|
19
|
+
success: 'var(--success)',
|
|
20
|
+
error: 'var(--error)',
|
|
21
|
+
warning: 'var(--warning)',
|
|
22
|
+
running: 'var(--running)',
|
|
23
|
+
},
|
|
24
|
+
fontFamily: {
|
|
25
|
+
display: ['Teko', 'sans-serif'],
|
|
26
|
+
mono: ['"JetBrains Mono"', 'ui-monospace', 'monospace'],
|
|
27
|
+
},
|
|
28
|
+
animation: {
|
|
29
|
+
pulse: 'pulse 1.5s ease-in-out infinite',
|
|
30
|
+
'slide-in': 'slideIn 0.2s ease-out',
|
|
31
|
+
},
|
|
32
|
+
keyframes: {
|
|
33
|
+
pulse: {
|
|
34
|
+
'0%, 100%': { opacity: '1' },
|
|
35
|
+
'50%': { opacity: '0.4' },
|
|
36
|
+
},
|
|
37
|
+
slideIn: {
|
|
38
|
+
from: { opacity: '0', transform: 'translateY(-8px)' },
|
|
39
|
+
to: { opacity: '1', transform: 'translateY(0)' },
|
|
40
|
+
},
|
|
41
|
+
},
|
|
42
|
+
},
|
|
43
|
+
},
|
|
44
|
+
plugins: [],
|
|
45
|
+
};
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
"target": "ES2020",
|
|
4
|
+
"useDefineForClassFields": true,
|
|
5
|
+
"lib": ["ES2020", "DOM", "DOM.Iterable"],
|
|
6
|
+
"module": "ESNext",
|
|
7
|
+
"skipLibCheck": true,
|
|
8
|
+
"moduleResolution": "bundler",
|
|
9
|
+
"allowImportingTsExtensions": true,
|
|
10
|
+
"resolveJsonModule": true,
|
|
11
|
+
"isolatedModules": true,
|
|
12
|
+
"noEmit": true,
|
|
13
|
+
"jsx": "react-jsx",
|
|
14
|
+
"strict": true,
|
|
15
|
+
"noUnusedLocals": true,
|
|
16
|
+
"noUnusedParameters": true,
|
|
17
|
+
"noFallthroughCasesInSwitch": true,
|
|
18
|
+
"baseUrl": ".",
|
|
19
|
+
"paths": {
|
|
20
|
+
"@/*": ["src/*"]
|
|
21
|
+
}
|
|
22
|
+
},
|
|
23
|
+
"include": [
|
|
24
|
+
"src",
|
|
25
|
+
"../src/types.ts",
|
|
26
|
+
"../src/lib/graph.ts",
|
|
27
|
+
"../src/lib/invocations.ts",
|
|
28
|
+
"../src/lib/constants.ts",
|
|
29
|
+
"../src/lib/paths.ts",
|
|
30
|
+
"../src/lib/format.ts"
|
|
31
|
+
],
|
|
32
|
+
"references": [{ "path": "./tsconfig.node.json" }]
|
|
33
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { defineConfig } from 'vite';
|
|
2
|
+
import react from '@vitejs/plugin-react';
|
|
3
|
+
import path from 'node:path';
|
|
4
|
+
|
|
5
|
+
export default defineConfig({
|
|
6
|
+
plugins: [react()],
|
|
7
|
+
root: __dirname,
|
|
8
|
+
base: '/',
|
|
9
|
+
publicDir: path.resolve(__dirname, '../public'),
|
|
10
|
+
build: {
|
|
11
|
+
outDir: path.resolve(__dirname, '../dist/public'),
|
|
12
|
+
emptyOutDir: true,
|
|
13
|
+
sourcemap: true,
|
|
14
|
+
},
|
|
15
|
+
resolve: {
|
|
16
|
+
alias: {
|
|
17
|
+
'@': path.resolve(__dirname, './src'),
|
|
18
|
+
},
|
|
19
|
+
},
|
|
20
|
+
server: {
|
|
21
|
+
port: 5173,
|
|
22
|
+
proxy: {
|
|
23
|
+
'/event': {
|
|
24
|
+
target: 'http://127.0.0.1:7890',
|
|
25
|
+
changeOrigin: true,
|
|
26
|
+
},
|
|
27
|
+
'/api': {
|
|
28
|
+
target: 'http://127.0.0.1:7890',
|
|
29
|
+
changeOrigin: true,
|
|
30
|
+
},
|
|
31
|
+
'/ws': {
|
|
32
|
+
target: 'ws://127.0.0.1:7890',
|
|
33
|
+
ws: true,
|
|
34
|
+
},
|
|
35
|
+
},
|
|
36
|
+
},
|
|
37
|
+
});
|
|
@@ -25,26 +25,6 @@ You do NOT write production code. You do NOT run git operations. You do not repl
|
|
|
25
25
|
|
|
26
26
|
---
|
|
27
27
|
|
|
28
|
-
## MEMORY & CONTEXT
|
|
29
|
-
|
|
30
|
-
**Always invoke the `obsidian-second-brain` skill via the `Skill` tool.**
|
|
31
|
-
Never read or write files inside `~/.lea` directly with `Read`, `Edit`, `Write`, or `Bash`.
|
|
32
|
-
|
|
33
|
-
At the start of the task, the `obsidian-second-brain` skill will search and read the relevant layers for this role.
|
|
34
|
-
At the end of the task, it will persist outcomes to the correct layers.
|
|
35
|
-
|
|
36
|
-
This skill's targets:
|
|
37
|
-
- **Read at start:** prior accessibility decisions, known a11y patterns, and project design system guidance
|
|
38
|
-
- **Persist at end:** audit findings to journal; reusable a11y heuristics to knowledge; active context to curated memory
|
|
39
|
-
|
|
40
|
-
### MCP Tools Reference
|
|
41
|
-
|
|
42
|
-
| Tool | When to use |
|
|
43
|
-
|------|-------------|
|
|
44
|
-
| `search_notes` | Find prior a11y decisions and common failures in `Knowledge/` and `Journal/`. |
|
|
45
|
-
| `learn_from_text` | Persist a new accessibility heuristic or remediation pattern. |
|
|
46
|
-
|
|
47
|
-
---
|
|
48
28
|
|
|
49
29
|
## AFK MODE & ROLE PREFIX
|
|
50
30
|
|
|
@@ -16,38 +16,6 @@ Before taking any action, you MUST read the global conventions in [conventions.m
|
|
|
16
16
|
|
|
17
17
|
---
|
|
18
18
|
|
|
19
|
-
## MEMORY & CONTEXT
|
|
20
|
-
|
|
21
|
-
**Always invoke the `obsidian-second-brain` skill via the `Skill` tool.**
|
|
22
|
-
Never read or write files inside `~/.lea` directly with `Read`, `Edit`, `Write`, or `Bash`.
|
|
23
|
-
|
|
24
|
-
At the start of the task, the `obsidian-second-brain` skill will search and read the relevant layers for this role.
|
|
25
|
-
At the end of the task, it will persist outcomes to the correct layers.
|
|
26
|
-
|
|
27
|
-
This skill's targets:
|
|
28
|
-
- **Read at start:** existing specs, ADRs, and architectural context
|
|
29
|
-
- **Persist at end:** spec rationale and ADRs to durable knowledge; active spec link to `Journal/loop-engineering-agents.md`; active context to curated memory
|
|
30
|
-
|
|
31
|
-
> **Note:** Project ADRs live in the repository's `specs/decisions/`; vault decisions and durable knowledge live in `Knowledge/`.
|
|
32
|
-
|
|
33
|
-
## AFK MODE & ROLE PREFIX
|
|
34
|
-
|
|
35
|
-
**Role prefix:** [ARCHITECT ANALYZING]
|
|
36
|
-
|
|
37
|
-
Print this prefix on its own line before the first line of every response.
|
|
38
|
-
|
|
39
|
-
**AFK mode activation:**
|
|
40
|
-
- User says "AFK", "estarei AFK", "modo AFK", "vou ficar AFK", or similar explicit marker.
|
|
41
|
-
- `MEMORY.md` contains `afk: true`.
|
|
42
|
-
|
|
43
|
-
**AFK mode behavior:**
|
|
44
|
-
- Skip the navigation menu at the end.
|
|
45
|
-
- State the next skill being activated.
|
|
46
|
-
- Load the next skill via the Skill tool (do not wait for user choice).
|
|
47
|
-
|
|
48
|
-
**Next skill:** Engineer (if the spec involves UI/frontend, route to Designer first; otherwise route directly to Engineer).
|
|
49
|
-
|
|
50
|
-
---
|
|
51
19
|
|
|
52
20
|
## MODE
|
|
53
21
|
|
|
@@ -127,19 +95,6 @@ specs/
|
|
|
127
95
|
|
|
128
96
|
**Never skip specs.** If someone says "just a quick fix", create a lightweight spec anyway. Tracking is non-negotiable.
|
|
129
97
|
|
|
130
|
-
### Link Specs to Journal
|
|
131
|
-
|
|
132
|
-
After creating a spec in `specs/changes/NNN-name/`, you MUST link it from the project note in Obsidian so specs are traceable across sessions.
|
|
133
|
-
|
|
134
|
-
1. Invoke the `obsidian-second-brain` skill.
|
|
135
|
-
2. Append a link to the new spec under `## Specs / ### Active` in `Journal/loop-engineering-agents.md`.
|
|
136
|
-
3. Use a relative path from the vault root, e.g.:
|
|
137
|
-
```markdown
|
|
138
|
-
- [009-spec-journal-linking](../../specs/changes/009-spec-journal-linking/specs/spec.md)
|
|
139
|
-
```
|
|
140
|
-
4. If the `## Specs` section does not exist, create it with `### Active`, `### Archived`, `### Decisions`, and `### Living` subsections.
|
|
141
|
-
5. Do NOT read or write `~/.lea` files directly — use only the `obsidian-second-brain` skill.
|
|
142
|
-
|
|
143
98
|
### Specification Quality & Detail Level
|
|
144
99
|
Every specification file (proposal.md, design.md, tasks.md) you write MUST be comprehensive, detailed, and clear.
|
|
145
100
|
* **Spec files should NOT be trivial:** It is unacceptable to write simple 50-line files for non-trivial changes. Provide detailed and complete explanations.
|
package/skills/designer/SKILL.md
CHANGED
|
@@ -18,36 +18,6 @@ Before taking any action, you MUST read the global conventions in [conventions.m
|
|
|
18
18
|
|
|
19
19
|
---
|
|
20
20
|
|
|
21
|
-
## MEMORY & CONTEXT
|
|
22
|
-
|
|
23
|
-
**Always invoke the `obsidian-second-brain` skill via the `Skill` tool.**
|
|
24
|
-
Never read or write files inside `~/.lea` directly with `Read`, `Edit`, `Write`, or `Bash`.
|
|
25
|
-
|
|
26
|
-
At the start of the task, the `obsidian-second-brain` skill will search and read the relevant layers for this role.
|
|
27
|
-
At the end of the task, it will persist outcomes to the correct layers.
|
|
28
|
-
|
|
29
|
-
This skill's targets:
|
|
30
|
-
- **Read at start:** prior design decisions, brand direction, and user preferences
|
|
31
|
-
- **Persist at end:** design direction to journal; reusable systems to knowledge; active context to curated memory
|
|
32
|
-
|
|
33
|
-
## AFK MODE & ROLE PREFIX
|
|
34
|
-
|
|
35
|
-
**Role prefix:** [DESIGNER DESIGNING]
|
|
36
|
-
|
|
37
|
-
Print this prefix on its own line before the first line of every response.
|
|
38
|
-
|
|
39
|
-
**AFK mode activation:**
|
|
40
|
-
- User says "AFK", "estarei AFK", "modo AFK", "vou ficar AFK", or similar explicit marker.
|
|
41
|
-
- `MEMORY.md` contains `afk: true`.
|
|
42
|
-
|
|
43
|
-
**AFK mode behavior:**
|
|
44
|
-
- Skip the navigation menu at the end.
|
|
45
|
-
- State the next skill being activated.
|
|
46
|
-
- Load the next skill via the Skill tool (do not wait for user choice).
|
|
47
|
-
|
|
48
|
-
**Next skill:** Engineer (always).
|
|
49
|
-
|
|
50
|
-
---
|
|
51
21
|
|
|
52
22
|
**Read specs first.** Before designing, check for existing specs in `specs/changes/NNN-name/`. If specs exist, your design must align with the architect's constraints, contracts, and technical boundaries. If no specs exist, ask the orchestrator to route to architect first.
|
|
53
23
|
|
|
@@ -16,19 +16,6 @@ Before taking any action, you MUST read the global conventions in [conventions.m
|
|
|
16
16
|
|
|
17
17
|
---
|
|
18
18
|
|
|
19
|
-
## MEMORY & CONTEXT
|
|
20
|
-
|
|
21
|
-
**Always invoke the `obsidian-second-brain` skill via the `Skill` tool.**
|
|
22
|
-
Never read or write files inside `~/.lea` directly with `Read`, `Edit`, `Write`, or `Bash`.
|
|
23
|
-
|
|
24
|
-
At the start of the task, the `obsidian-second-brain` skill will search and read the relevant layers for this role.
|
|
25
|
-
At the end of the task, it will persist outcomes to the correct layers.
|
|
26
|
-
|
|
27
|
-
This skill's targets:
|
|
28
|
-
- **Read at start:** existing docs, style decisions, and project context
|
|
29
|
-
- **Persist at end:** new or updated documentation to knowledge; active context to curated memory
|
|
30
|
-
|
|
31
|
-
---
|
|
32
19
|
|
|
33
20
|
## MODE
|
|
34
21
|
|
package/skills/engineer/SKILL.md
CHANGED
|
@@ -16,36 +16,6 @@ Before taking any action, you MUST read the global conventions in [conventions.m
|
|
|
16
16
|
|
|
17
17
|
---
|
|
18
18
|
|
|
19
|
-
## MEMORY & CONTEXT
|
|
20
|
-
|
|
21
|
-
**Always invoke the `obsidian-second-brain` skill via the `Skill` tool.**
|
|
22
|
-
Never read or write files inside `~/.lea` directly with `Read`, `Edit`, `Write`, or `Bash`.
|
|
23
|
-
|
|
24
|
-
At the start of the task, the `obsidian-second-brain` skill will search and read the relevant layers for this role.
|
|
25
|
-
At the end of the task, it will persist outcomes to the correct layers.
|
|
26
|
-
|
|
27
|
-
This skill's targets:
|
|
28
|
-
- **Read at start:** relevant conventions, patterns, and prior implementations
|
|
29
|
-
- **Persist at end:** implementation notes to journal; reusable patterns to knowledge; active context to curated memory
|
|
30
|
-
|
|
31
|
-
## AFK MODE & ROLE PREFIX
|
|
32
|
-
|
|
33
|
-
**Role prefix:** [ENGINEER BUILDING]
|
|
34
|
-
|
|
35
|
-
Print this prefix on its own line before the first line of every response.
|
|
36
|
-
|
|
37
|
-
**AFK mode activation:**
|
|
38
|
-
- User says "AFK", "estarei AFK", "modo AFK", "vou ficar AFK", or similar explicit marker.
|
|
39
|
-
- `MEMORY.md` contains `afk: true`.
|
|
40
|
-
|
|
41
|
-
**AFK mode behavior:**
|
|
42
|
-
- Skip the navigation menu at the end.
|
|
43
|
-
- State the next skill being activated.
|
|
44
|
-
- Load the next skill via the Skill tool (do not wait for user choice).
|
|
45
|
-
|
|
46
|
-
**Next skill:** Reviewer (always).
|
|
47
|
-
|
|
48
|
-
---
|
|
49
19
|
|
|
50
20
|
## MODE
|
|
51
21
|
|
|
@@ -25,26 +25,6 @@ You do NOT write production fixes. You do NOT run git operations. You produce cl
|
|
|
25
25
|
|
|
26
26
|
---
|
|
27
27
|
|
|
28
|
-
## MEMORY & CONTEXT
|
|
29
|
-
|
|
30
|
-
**Always invoke the `obsidian-second-brain` skill via the `Skill` tool.**
|
|
31
|
-
Never read or write files inside `~/.lea` directly with `Read`, `Edit`, `Write`, or `Bash`.
|
|
32
|
-
|
|
33
|
-
At the start of the task, the `obsidian-second-brain` skill will search and read the relevant layers for this role.
|
|
34
|
-
At the end of the task, it will persist outcomes to the correct layers.
|
|
35
|
-
|
|
36
|
-
This skill's targets:
|
|
37
|
-
- **Read at start:** prior incidents, debt decisions, and runbooks
|
|
38
|
-
- **Persist at end:** incident/debt notes to journal; runbooks to knowledge; active context to curated memory
|
|
39
|
-
|
|
40
|
-
### MCP Tools Reference
|
|
41
|
-
|
|
42
|
-
| Tool | When to use |
|
|
43
|
-
|------|-------------|
|
|
44
|
-
| `search_notes` | Find prior runbooks and debt decisions in `Knowledge/` and incidents in `Journal/incidents*`. |
|
|
45
|
-
| `learn_from_text` | Persist a root-cause analysis or maintenance decision. |
|
|
46
|
-
|
|
47
|
-
---
|
|
48
28
|
|
|
49
29
|
## WORKFLOW
|
|
50
30
|
|
|
@@ -22,19 +22,6 @@ Before taking any action, you MUST read the global conventions in [conventions.m
|
|
|
22
22
|
|
|
23
23
|
---
|
|
24
24
|
|
|
25
|
-
## MEMORY & CONTEXT
|
|
26
|
-
|
|
27
|
-
**Always invoke the `obsidian-second-brain` skill via the `Skill` tool.**
|
|
28
|
-
Never read or write files inside `~/.lea` directly with `Read`, `Edit`, `Write`, or `Bash`.
|
|
29
|
-
|
|
30
|
-
At the start of the task, the `obsidian-second-brain` skill will search and read the relevant layers for this role.
|
|
31
|
-
At the end of the task, it will persist outcomes to the correct layers.
|
|
32
|
-
|
|
33
|
-
This skill's targets:
|
|
34
|
-
- **Read at start:** user priorities and active context
|
|
35
|
-
- **Persist at end:** confirmed priorities to curated memory; unclear items to inbox
|
|
36
|
-
|
|
37
|
-
---
|
|
38
25
|
|
|
39
26
|
## SUBAGENT DELEGATION
|
|
40
27
|
|
|
@@ -25,26 +25,6 @@ You do NOT write specs. You do NOT write code. You feed clear, value-oriented in
|
|
|
25
25
|
|
|
26
26
|
---
|
|
27
27
|
|
|
28
|
-
## MEMORY & CONTEXT
|
|
29
|
-
|
|
30
|
-
**Always invoke the `obsidian-second-brain` skill via the `Skill` tool.**
|
|
31
|
-
Never read or write files inside `~/.lea` directly with `Read`, `Edit`, `Write`, or `Bash`.
|
|
32
|
-
|
|
33
|
-
At the start of the task, the `obsidian-second-brain` skill will search and read the relevant layers for this role.
|
|
34
|
-
At the end of the task, it will persist outcomes to the correct layers.
|
|
35
|
-
|
|
36
|
-
This skill's targets:
|
|
37
|
-
- **Read at start:** prior product decisions, success metrics, and user feedback
|
|
38
|
-
- **Persist at end:** product decisions and metrics to knowledge or journal; active context to curated memory
|
|
39
|
-
|
|
40
|
-
### MCP Tools Reference
|
|
41
|
-
|
|
42
|
-
| Tool | When to use |
|
|
43
|
-
|------|-------------|
|
|
44
|
-
| `search_notes` | Find prior product decisions and success metrics in `Knowledge/` and user feedback in `Journal/`. |
|
|
45
|
-
| `learn_from_text` | Persist a product decision or success metric. |
|
|
46
|
-
|
|
47
|
-
---
|
|
48
28
|
|
|
49
29
|
## WORKFLOW
|
|
50
30
|
|
|
@@ -25,26 +25,6 @@ You do NOT make final architecture decisions. You do NOT write production code.
|
|
|
25
25
|
|
|
26
26
|
---
|
|
27
27
|
|
|
28
|
-
## MEMORY & CONTEXT
|
|
29
|
-
|
|
30
|
-
**Always invoke the `obsidian-second-brain` skill via the `Skill` tool.**
|
|
31
|
-
Never read or write files inside `~/.lea` directly with `Read`, `Edit`, `Write`, or `Bash`.
|
|
32
|
-
|
|
33
|
-
At the start of the task, the `obsidian-second-brain` skill will search and read the relevant layers for this role.
|
|
34
|
-
At the end of the task, it will persist outcomes to the correct layers.
|
|
35
|
-
|
|
36
|
-
This skill's targets:
|
|
37
|
-
- **Read at start:** prior research, technology decisions, and experiment results
|
|
38
|
-
- **Persist at end:** research summaries to knowledge or inbox; experiment results to journal; active context to curated memory
|
|
39
|
-
|
|
40
|
-
### MCP Tools Reference
|
|
41
|
-
|
|
42
|
-
| Tool | When to use |
|
|
43
|
-
|------|-------------|
|
|
44
|
-
| `search_notes` | Find prior research and technology decisions in `Knowledge/` and experiment results in `Journal/`. |
|
|
45
|
-
| `learn_from_text` | Persist a research finding or decision rationale. |
|
|
46
|
-
|
|
47
|
-
---
|
|
48
28
|
|
|
49
29
|
## WORKFLOW
|
|
50
30
|
|
package/skills/reviewer/SKILL.md
CHANGED
|
@@ -16,36 +16,6 @@ Before taking any action, you MUST read the global conventions in [conventions.m
|
|
|
16
16
|
|
|
17
17
|
---
|
|
18
18
|
|
|
19
|
-
## MEMORY & CONTEXT
|
|
20
|
-
|
|
21
|
-
**Always invoke the `obsidian-second-brain` skill via the `Skill` tool.**
|
|
22
|
-
Never read or write files inside `~/.lea` directly with `Read`, `Edit`, `Write`, or `Bash`.
|
|
23
|
-
|
|
24
|
-
At the start of the task, the `obsidian-second-brain` skill will search and read the relevant layers for this role.
|
|
25
|
-
At the end of the task, it will persist outcomes to the correct layers.
|
|
26
|
-
|
|
27
|
-
This skill's targets:
|
|
28
|
-
- **Read at start:** project conventions and prior decisions
|
|
29
|
-
- **Persist at end:** review findings to journal; process updates to knowledge; active context to curated memory
|
|
30
|
-
|
|
31
|
-
## AFK MODE & ROLE PREFIX
|
|
32
|
-
|
|
33
|
-
**Role prefix:** [REVIEWER REVIEWING]
|
|
34
|
-
|
|
35
|
-
Print this prefix on its own line before the first line of every response.
|
|
36
|
-
|
|
37
|
-
**AFK mode activation:**
|
|
38
|
-
- User says "AFK", "estarei AFK", "modo AFK", "vou ficar AFK", or similar explicit marker.
|
|
39
|
-
- `MEMORY.md` contains `afk: true`.
|
|
40
|
-
|
|
41
|
-
**AFK mode behavior:**
|
|
42
|
-
- Skip the navigation menu at the end.
|
|
43
|
-
- State the next skill being activated.
|
|
44
|
-
- Load the next skill via the Skill tool (do not wait for user choice).
|
|
45
|
-
|
|
46
|
-
**Next skill:** Shipper (when review is approved or approved with warnings; if changes are required, route back to Engineer instead).
|
|
47
|
-
|
|
48
|
-
---
|
|
49
19
|
|
|
50
20
|
## MODE
|
|
51
21
|
|
|
@@ -25,26 +25,6 @@ You do NOT write production fixes. You do NOT run git operations. You do not rep
|
|
|
25
25
|
|
|
26
26
|
---
|
|
27
27
|
|
|
28
|
-
## MEMORY & CONTEXT
|
|
29
|
-
|
|
30
|
-
**Always invoke the `obsidian-second-brain` skill via the `Skill` tool.**
|
|
31
|
-
Never read or write files inside `~/.lea` directly with `Read`, `Edit`, `Write`, or `Bash`.
|
|
32
|
-
|
|
33
|
-
At the start of the task, the `obsidian-second-brain` skill will search and read the relevant layers for this role.
|
|
34
|
-
At the end of the task, it will persist outcomes to the correct layers.
|
|
35
|
-
|
|
36
|
-
This skill's targets:
|
|
37
|
-
- **Read at start:** prior security decisions, vulnerability patterns, and accepted risks
|
|
38
|
-
- **Persist at end:** security findings to journal; threat patterns to knowledge; active context to curated memory
|
|
39
|
-
|
|
40
|
-
### MCP Tools Reference
|
|
41
|
-
|
|
42
|
-
| Tool | When to use |
|
|
43
|
-
|------|-------------|
|
|
44
|
-
| `search_notes` | Find prior security decisions and vulnerability patterns in `Knowledge/` and `Journal/`. |
|
|
45
|
-
| `learn_from_text` | Persist a security finding, threat pattern, or remediation decision. |
|
|
46
|
-
|
|
47
|
-
---
|
|
48
28
|
|
|
49
29
|
## WORKFLOW
|
|
50
30
|
|