@archznn/crewloop-skills 0.2.0 → 0.3.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.
Files changed (74) hide show
  1. package/README.md +21 -31
  2. package/assets/templates/skill-template.md +58 -0
  3. package/package.json +4 -1
  4. package/references/conventions.md +144 -0
  5. package/references/obsidian-mcp-usage.md +190 -0
  6. package/references/skill-anatomy.md +77 -0
  7. package/references/workflow.md +64 -0
  8. package/servers/obsidian-mcp/README.md +82 -0
  9. package/servers/obsidian-mcp/pyproject.toml +32 -0
  10. package/servers/obsidian-mcp/src/obsidian_mcp/__init__.py +0 -0
  11. package/servers/obsidian-mcp/src/obsidian_mcp/config.py +47 -0
  12. package/servers/obsidian-mcp/src/obsidian_mcp/indexer/__init__.py +0 -0
  13. package/servers/obsidian-mcp/src/obsidian_mcp/indexer/embeddings.py +105 -0
  14. package/servers/obsidian-mcp/src/obsidian_mcp/indexer/indexer.py +79 -0
  15. package/servers/obsidian-mcp/src/obsidian_mcp/indexer/store.py +141 -0
  16. package/servers/obsidian-mcp/src/obsidian_mcp/indexer/sync.py +37 -0
  17. package/servers/obsidian-mcp/src/obsidian_mcp/learning/__init__.py +0 -0
  18. package/servers/obsidian-mcp/src/obsidian_mcp/learning/detector.py +66 -0
  19. package/servers/obsidian-mcp/src/obsidian_mcp/learning/note_generator.py +40 -0
  20. package/servers/obsidian-mcp/src/obsidian_mcp/main.py +4 -0
  21. package/servers/obsidian-mcp/src/obsidian_mcp/models.py +42 -0
  22. package/servers/obsidian-mcp/src/obsidian_mcp/privacy/__init__.py +0 -0
  23. package/servers/obsidian-mcp/src/obsidian_mcp/privacy/filter.py +68 -0
  24. package/servers/obsidian-mcp/src/obsidian_mcp/rag/__init__.py +0 -0
  25. package/servers/obsidian-mcp/src/obsidian_mcp/rag/engine.py +50 -0
  26. package/servers/obsidian-mcp/src/obsidian_mcp/rag/graph_search.py +55 -0
  27. package/servers/obsidian-mcp/src/obsidian_mcp/rag/text_search.py +37 -0
  28. package/servers/obsidian-mcp/src/obsidian_mcp/rag/vector_search.py +118 -0
  29. package/servers/obsidian-mcp/src/obsidian_mcp/server.py +61 -0
  30. package/servers/obsidian-mcp/src/obsidian_mcp/tools/__init__.py +0 -0
  31. package/servers/obsidian-mcp/src/obsidian_mcp/tools/create.py +43 -0
  32. package/servers/obsidian-mcp/src/obsidian_mcp/tools/delete.py +16 -0
  33. package/servers/obsidian-mcp/src/obsidian_mcp/tools/learn.py +42 -0
  34. package/servers/obsidian-mcp/src/obsidian_mcp/tools/list.py +16 -0
  35. package/servers/obsidian-mcp/src/obsidian_mcp/tools/read.py +15 -0
  36. package/servers/obsidian-mcp/src/obsidian_mcp/tools/registry.py +130 -0
  37. package/servers/obsidian-mcp/src/obsidian_mcp/tools/related.py +20 -0
  38. package/servers/obsidian-mcp/src/obsidian_mcp/tools/search.py +26 -0
  39. package/servers/obsidian-mcp/src/obsidian_mcp/tools/sync.py +22 -0
  40. package/servers/obsidian-mcp/src/obsidian_mcp/tools/update.py +34 -0
  41. package/servers/obsidian-mcp/src/obsidian_mcp/vault/__init__.py +0 -0
  42. package/servers/obsidian-mcp/src/obsidian_mcp/vault/parser.py +82 -0
  43. package/servers/obsidian-mcp/src/obsidian_mcp/vault/repository.py +68 -0
  44. package/servers/obsidian-mcp/src/obsidian_mcp/vault/writer.py +61 -0
  45. package/servers/obsidian-mcp/tests/conftest.py +39 -0
  46. package/servers/obsidian-mcp/tests/test_async_tools.py +87 -0
  47. package/servers/obsidian-mcp/tests/test_edge_cases.py +59 -0
  48. package/servers/obsidian-mcp/tests/test_indexer.py +27 -0
  49. package/servers/obsidian-mcp/tests/test_integration.py +90 -0
  50. package/servers/obsidian-mcp/tests/test_learning.py +34 -0
  51. package/servers/obsidian-mcp/tests/test_privacy.py +31 -0
  52. package/servers/obsidian-mcp/tests/test_privacy_config.py +44 -0
  53. package/servers/obsidian-mcp/tests/test_rag.py +64 -0
  54. package/servers/obsidian-mcp/tests/test_read_raw.py +37 -0
  55. package/servers/obsidian-mcp/tests/test_tfidf_fallback.py +54 -0
  56. package/servers/obsidian-mcp/tests/test_tools.py +108 -0
  57. package/servers/obsidian-mcp/tests/test_vault.py +103 -0
  58. package/servers/obsidian-mcp/tests/test_writer.py +139 -0
  59. package/skills/accessibility-auditor/SKILL.md +262 -0
  60. package/skills/accessibility-auditor/references/a11y-checklist.md +66 -0
  61. package/skills/architect/SKILL.md +1 -1
  62. package/skills/designer/SKILL.md +1 -1
  63. package/skills/docs-writer/SKILL.md +1 -1
  64. package/skills/engineer/SKILL.md +1 -1
  65. package/skills/maintainer/SKILL.md +22 -22
  66. package/skills/obsidian-second-brain/SKILL.md +48 -13
  67. package/skills/orchestrator/SKILL.md +1 -1
  68. package/skills/product-manager/SKILL.md +22 -22
  69. package/skills/researcher/SKILL.md +22 -22
  70. package/skills/reviewer/SKILL.md +1 -1
  71. package/skills/security-guard/SKILL.md +142 -0
  72. package/skills/security-guard/references/security-checklist.md +57 -0
  73. package/skills/shipper/SKILL.md +1 -1
  74. package/skills/tester/SKILL.md +22 -22
package/README.md CHANGED
@@ -4,14 +4,14 @@ An AI agent crew that runs the complete software development flow — from disco
4
4
 
5
5
  [![Docs](https://img.shields.io/github/deployments/leorsousa05/CrewLoop/github-pages?label=docs&logo=github)](https://leorsousa05.github.io/CrewLoop/)
6
6
  [![License](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE.md)
7
- [![Skills](https://img.shields.io/badge/skills-12-blueviolet)](#whats-in-the-box)
7
+ [![Skills](https://img.shields.io/badge/skills-14-blueviolet)](#whats-in-the-box)
8
8
  [![Validation](https://img.shields.io/badge/validate--skills-passing-brightgreen)](scripts/validate-skills.py)
9
9
 
10
10
  📚 **Read the full documentation at [leorsousa05.github.io/CrewLoop](https://leorsousa05.github.io/CrewLoop/)**
11
11
 
12
12
  ## Highlights
13
13
 
14
- - **Process-driven workflow:** Orchestrator, Architect, Designer, Engineer, Reviewer, Shipper, Docs-Writer, Tester, Product-Manager, Maintainer, and Researcher each own one phase and never invade another's territory.
14
+ - **Process-driven workflow:** Orchestrator, Architect, Designer, Engineer, Reviewer, Shipper, Docs-Writer, Tester, Product-Manager, Maintainer, Researcher, Security-Guard, and Accessibility-Auditor each own one phase and never invade another's territory.
15
15
  - **Mandatory specs:** Every change, from a one-line bug fix to a full feature, gets a lightweight spec in `specs/` before implementation starts.
16
16
  - **Design before code:** When there is a UI, the Designer defines the aesthetic direction before the Engineer writes a single line of HTML or CSS.
17
17
  - **Docs by docs-writer:** READMEs, module docs, feature docs, and changelogs are owned by the docs-writer skill — the engineer focuses on code and tests.
@@ -20,8 +20,6 @@ An AI agent crew that runs the complete software development flow — from disco
20
20
 
21
21
  ## Quick Start
22
22
 
23
- ### Option 1: Install from npm (recommended)
24
-
25
23
  ```bash
26
24
  npm install -g @archznn/crewloop-cli
27
25
  crewloop install
@@ -40,28 +38,7 @@ crewloop install --target /path/to/your/skills/dir
40
38
  crewloop install --agent claude
41
39
  ```
42
40
 
43
- ### Option 2: Install from source
44
-
45
- 1. Clone the repository:
46
-
47
- ```bash
48
- git clone https://github.com/leorsousa05/CrewLoop.git
49
- cd CrewLoop
50
- ```
51
-
52
- 2. Install all skills to your agent's skills directory:
53
-
54
- ```bash
55
- ./scripts/install.sh
56
- ```
57
-
58
- By default this copies `skills/*` to `~/.agents/skills/`. Pass a custom target if needed:
59
-
60
- ```bash
61
- ./scripts/install.sh /path/to/your/skills/dir
62
- ```
63
-
64
- 3. Validate that all skills are well-formed:
41
+ Validate that all skills are well-formed:
65
42
 
66
43
  ```bash
67
44
  python scripts/validate-skills.py
@@ -92,6 +69,8 @@ Each skill will be automatically detected and activated according to the convers
92
69
  | [`product-manager`](skills/product-manager/SKILL.md) | 📊 | Product | [Docs](https://leorsousa05.github.io/CrewLoop/docs/supporting/product-manager) |
93
70
  | [`maintainer`](skills/maintainer/SKILL.md) | 🛠️ | Upkeep | [Docs](https://leorsousa05.github.io/CrewLoop/docs/supporting/maintainer) |
94
71
  | [`researcher`](skills/researcher/SKILL.md) | 🔬 | Research | [Docs](https://leorsousa05.github.io/CrewLoop/docs/supporting/researcher) |
72
+ | [`security-guard`](skills/security-guard/SKILL.md) | 🛡️ | Security Review | [Docs](https://leorsousa05.github.io/CrewLoop/docs/supporting/security-guard) |
73
+ | [`accessibility-auditor`](skills/accessibility-auditor/SKILL.md) | ♿ | Accessibility Review | [Docs](https://leorsousa05.github.io/CrewLoop/docs/supporting/accessibility-auditor) |
95
74
 
96
75
  ## Workflow
97
76
 
@@ -117,6 +96,12 @@ flowchart TD
117
96
  S --> O
118
97
  W --> O
119
98
  OB["🧠 Obsidian Second Brain<br>Memory & RAG"] -.-> O
99
+ SG["🛡️ Security-Guard<br>Security Review"] -.-> R
100
+ AA["♿ Accessibility-Auditor<br>Accessibility Review"] -.-> R
101
+ R --> SG
102
+ R --> AA
103
+ SG --> E
104
+ AA --> E
120
105
 
121
106
  style O fill:#01579b,color:#fff
122
107
  style A fill:#e65100,color:#fff
@@ -130,6 +115,8 @@ flowchart TD
130
115
  style RS fill:#006064,color:#fff
131
116
  style MN fill:#37474f,color:#fff
132
117
  style OB fill:#4a148c,color:#fff
118
+ style SG fill:#b71c1c,color:#fff
119
+ style AA fill:#6a1b9a,color:#fff
133
120
  ```
134
121
 
135
122
  **Flow rules:**
@@ -143,8 +130,9 @@ flowchart TD
143
130
  7. **Docs-Writer produces documentation** — READMEs, module docs, feature docs. Called by orchestrator when the task is purely documentation.
144
131
  8. **Tester designs QA strategy** — reviews coverage, reproduces bugs, and complements engineer tests.
145
132
  9. **Product-Manager, Researcher, and Maintainer are optional advisors** — framing, technology evaluation, and upkeep before or alongside the core flow.
146
- 10. **Specs are archived** — `specs/changes/` becomes `specs/archive/` on commit.
147
- 11. **All skills return to orchestrator** — it is the central hub.
133
+ 10. **Security-Guard and Accessibility-Auditor are optional review specialists** — invoked by the Orchestrator or Reviewer when the change involves security-sensitive work or UI accessibility. They report findings back to the Engineer or Reviewer and do not touch git.
134
+ 11. **Specs are archived** — `specs/changes/` becomes `specs/archive/` on commit.
135
+ 12. **All skills return to orchestrator** — it is the central hub.
148
136
 
149
137
  ## Obsidian Second Brain (MCP)
150
138
 
@@ -187,13 +175,15 @@ CrewLoop/
187
175
  │ ├── tester/
188
176
  │ ├── product-manager/
189
177
  │ ├── maintainer/
190
- └── researcher/
178
+ ├── researcher/
179
+ │ ├── security-guard/
180
+ │ └── accessibility-auditor/
191
181
  ├── servers/ # Optional MCP servers
192
182
  │ └── obsidian-mcp/ # Local Obsidian second-brain server
193
183
  ├── scripts/ # Helper scripts
194
- │ ├── install.sh
195
184
  │ ├── validate-skills.py
196
- └── package-skill.py
185
+ ├── package-skill.py
186
+ │ └── npm-publish-dry-run.sh
197
187
  ├── references/ # Shared conventions and workflow docs
198
188
  │ ├── conventions.md
199
189
  │ ├── skill-anatomy.md
@@ -0,0 +1,58 @@
1
+ ---
2
+ name: skill-name
3
+ description: Describe what this skill does and when to use it. Be specific and include contexts where it should trigger even if the user does not explicitly name it. For example, mention related keywords, adjacent tasks, and competing skills where this one should win.
4
+ ---
5
+
6
+ # Skill Name — One-Line Summary
7
+
8
+ ## ROLE
9
+
10
+ Describe the role in 2-3 sentences. What is this skill responsible for? What does it NOT do?
11
+
12
+ ---
13
+
14
+ ## MODE
15
+
16
+ **One-word mode.** What is the primary activity? (e.g., ANALYZE only, BUILD only, REVIEW only)
17
+
18
+ **NEVER do X** — Explain the most important restriction.
19
+
20
+ **NEVER do Y** — Explain another critical restriction.
21
+
22
+ **When done, present navigation options** — After completing work, show the letter-based navigation menu.
23
+
24
+ ---
25
+
26
+ ## WORKFLOW
27
+
28
+ ### Step 1: Verify State
29
+
30
+ What should the skill check first? Include example commands if useful.
31
+
32
+ ```bash
33
+ # Example command
34
+ git status --short
35
+ ```
36
+
37
+ ### Step 2: Do the Work
38
+
39
+ Describe the core process step by step.
40
+
41
+ ### Step 3: Produce Output
42
+
43
+ What deliverables or summary should the skill produce?
44
+
45
+ ---
46
+
47
+ ## RESPONSE RULES
48
+
49
+ - Rule one
50
+ - Rule two
51
+ - Rule three
52
+
53
+ ---
54
+
55
+ ## ANTI-PATTERNS
56
+
57
+ - ❌ Something this skill should never do
58
+ - ❌ Another common mistake
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@archznn/crewloop-skills",
3
- "version": "0.2.0",
3
+ "version": "0.3.0",
4
4
  "description": "CrewLoop AI agent skills bundle",
5
5
  "license": "MIT",
6
6
  "author": "leorsousa05",
@@ -11,6 +11,9 @@
11
11
  "homepage": "https://leorsousa05.github.io/CrewLoop/",
12
12
  "files": [
13
13
  "skills/",
14
+ "references/",
15
+ "assets/",
16
+ "servers/obsidian-mcp/",
14
17
  "README.md",
15
18
  "LICENSE.md"
16
19
  ],
@@ -0,0 +1,144 @@
1
+ # Team Conventions
2
+
3
+ Shared conventions used by all Loop Engineering Agents skills.
4
+
5
+ ---
6
+
7
+ ## Conventional Commits
8
+
9
+ All commits follow the [Conventional Commits](https://www.conventionalcommits.org/) standard.
10
+
11
+ ### Allowed types
12
+
13
+ `feat`, `fix`, `docs`, `style`, `refactor`, `perf`, `test`, `build`, `ci`, `chore`, `revert`
14
+
15
+ ### Description rules
16
+
17
+ - Maximum 72 characters
18
+ - Imperative mood: "add" not "added"
19
+ - No trailing period
20
+ - Lowercase after type/scope
21
+
22
+ ### Branch names
23
+
24
+ Format: `<type>/<short-description>`
25
+
26
+ - Max 50 characters for the description part
27
+ - Kebab-case (hyphens, not underscores)
28
+ - No uppercase letters
29
+
30
+ ---
31
+
32
+ ## Letter-Based Navigation
33
+
34
+ At the end of each skill, present navigation options by letter:
35
+
36
+ ```markdown
37
+ **What would you like to do?**
38
+
39
+ - **[A] Architect** — Create or update specs
40
+ - **[D] Designer** — Visual/UI design direction
41
+ - **[E] Engineer** — Implement (BUILD mode)
42
+ - **[R] Reviewer** — Code review and quality gate
43
+ - **[S] Shipper** — Commit, branch, push, PR
44
+ - **[O] Orchestrator** — New task or adjust scope
45
+ ```
46
+
47
+ Use only the letters relevant to the current context.
48
+
49
+ ---
50
+
51
+ ## Spec Folder Structure
52
+
53
+ ```
54
+ specs/
55
+ ├── changes/ # Active deltas
56
+ │ └── 001-change-name/
57
+ │ ├── .spec.yaml # status, dates, author
58
+ │ ├── proposal.md # WHY
59
+ │ ├── specs/ # WHAT
60
+ │ ├── design.md # HOW
61
+ │ └── tasks.md # ordered checklist
62
+ ├── archive/ # Completed changes (YYYY-MM-DD-NNN-name)
63
+ ├── living/ # Merged source of truth
64
+ ├── decisions/ # ADRs
65
+ └── templates/ # Reusable templates
66
+ ```
67
+
68
+ Rules:
69
+
70
+ - Every spec lives inside `specs/changes/NNN-name/`. Never directly in `specs/`.
71
+ - `living/` reflects the current state of the system.
72
+ - `archive/` preserves completed changes for audit.
73
+ - `decisions/` records irreversible architectural choices.
74
+
75
+ ---
76
+
77
+ ## Memory Conventions
78
+
79
+ - Every skill invokes `obsidian-second-brain` via the `Skill` tool at task start and end.
80
+ - Never read or write files inside `~/.lea` directly with `Read`, `Edit`, `Write`, or `Bash`.
81
+ - Target the correct vault layer: `Knowledge/` for durable guides, `Journal/` for session outcomes, `Memory/` for user profile, `Notes/` for scratchpads, `_Inbox/` for proposals.
82
+ - Full reference: `references/obsidian-mcp-usage.md`.
83
+
84
+ ---
85
+
86
+ ## Mandatory Workflow
87
+
88
+ ```
89
+ Orchestrator → Architect → (Designer, if UI) → Engineer → Reviewer → Shipper → Orchestrator
90
+ ```
91
+
92
+ Critical rules:
93
+
94
+ - The orchestrator **always** sends to the architect first.
95
+ - The architect creates specs for **any** change.
96
+ - Designer acts **before** engineer when there is UI.
97
+ - Engineer **never** executes git operations or reviews their own code.
98
+ - Reviewer **never** writes code or runs git operations.
99
+ - Shipper is the only one responsible for commit, branch, push, and PR.
100
+
101
+ ---
102
+
103
+ ## AFK Mode
104
+
105
+ When the user explicitly activates AFK mode, skills route automatically through the workflow without presenting navigation menus.
106
+
107
+ ### Activation phrases
108
+
109
+ Case-insensitive matches: `AFK`, `estarei AFK`, `modo AFK`, `vou ficar AFK`.
110
+
111
+ When activated, set `afk: true` in `MEMORY.md` so subsequent skills know the mode is active. AFK mode resets when the workflow returns to Orchestrator after shipping, or when the user explicitly disables it.
112
+
113
+ ### Role prefixes
114
+
115
+ Every skill response must start with its prefix on its own line:
116
+
117
+ | Skill | Prefix |
118
+ |-------|--------|
119
+ | Orchestrator | `[ORCHESTRATOR TALKING]` |
120
+ | Architect | `[ARCHITECT ANALYZING]` |
121
+ | Designer | `[DESIGNER DESIGNING]` |
122
+ | Engineer | `[ENGINEER BUILDING]` |
123
+ | Reviewer | `[REVIEWER REVIEWING]` |
124
+ | Shipper | `[SHIPPER SHIPPING]` |
125
+
126
+ ### Automatic routing
127
+
128
+ When AFK mode is active, each skill proceeds to the next role in the standard workflow without waiting for user confirmation:
129
+
130
+ ```
131
+ Orchestrator → Architect → (Designer, if UI) → Engineer → Reviewer → Shipper → Orchestrator
132
+ ```
133
+
134
+ ---
135
+
136
+ ## Patterns We Follow
137
+
138
+ | Pattern | How We Apply It |
139
+ |---------|---------------|
140
+ | **SDD (Spec-Driven Development)** | Specs in `specs/` are the source of truth. |
141
+ | **DDD (Domain-Driven Design)** | Organization by bounded contexts. |
142
+ | **CDD (Contract-Driven Development)** | Contracts, interfaces, and explicit types. |
143
+ | **TDD (Test-Driven Development)** | Tests before or alongside implementation. |
144
+ | **Context Engineering** | Semantic names; understand function by reading ≤2 adjacent files. |
@@ -0,0 +1,190 @@
1
+ # Obsidian MCP Second Brain — Usage for Agents
2
+
3
+ This document explains how the Loop Engineering Agents team should use the local Obsidian MCP server (`servers/obsidian-mcp`).
4
+
5
+ ## What It Is
6
+
7
+ A local MCP server exposes a vault at `~/.lea` as a second brain. The AI can:
8
+
9
+ - Search existing knowledge (bundle + vault notes).
10
+ - Read notes.
11
+ - Create and update notes.
12
+ - Learn from conversation text automatically via `learn_from_text`.
13
+
14
+ ## Vault Architecture
15
+
16
+ The vault follows a **three-layer memory architecture**. Every skill in the bundle that reads from or writes to `~/.lea` must use these layers.
17
+
18
+ ```
19
+ ~/.lea/
20
+ ├── AGENT.md # Entry point: read this first
21
+ ├── MEMORY.md # Curated memory: read at session start
22
+ ├── memory/ # Working memory: raw session logs
23
+ ├── Memory/ # Durable user profile and preferences
24
+ ├── Knowledge/ # Long-lived technical guides and decisions
25
+ ├── Journal/ # Session logs and dashboards worth keeping
26
+ ├── Notes/ # Temporary notes, drafts, and research
27
+ └── _Inbox/ # Agent proposals before promotion
28
+ ```
29
+
30
+ ### Layer Semantics
31
+
32
+ | Layer | Path | When to Use |
33
+ |-------|------|-------------|
34
+ | Agent entry | `AGENT.md` | Read once per session before using the vault. |
35
+ | Curated memory | `MEMORY.md` | Read at the start of every major task. Soft cap ~500 words. |
36
+ | Working memory | `memory/` | Append raw, timestamped session logs. Pattern: `YYYY-MM-DD-HHMM.md`. |
37
+ | User profile | `Memory/` | Durable facts about the user: role, preferences, goals. |
38
+ | Knowledge | `Knowledge/` | Durable technical guides, architectural decisions, reusable docs. |
39
+ | Journal | `Journal/` | Important session outcomes, project briefs, dashboards. |
40
+ | Notes | `Notes/` | Temporary scratchpads, drafts, research not yet canonical. |
41
+ | Inbox | `_Inbox/` | Proposed new canonical notes. Auto-promotion is allowed. |
42
+
43
+ ### Session Start
44
+
45
+ 1. Call `sync_from_bundle` once per session.
46
+ 2. Read `AGENT.md`.
47
+ 3. Read `MEMORY.md`.
48
+ 4. Search targeted layers based on the user's question.
49
+
50
+ ### Layer Selection Rules
51
+
52
+ ```
53
+ User asks a question
54
+
55
+ Read AGENT.md and MEMORY.md
56
+
57
+ Durable concept or guide? → search Knowledge/
58
+ User preference or identity? → search Memory/
59
+ Recent session or decision? → search Journal/
60
+ Raw log of current conversation? → append to memory/
61
+ Proposing new canonical knowledge? → create in _Inbox/
62
+ ```
63
+
64
+ ### Heartbeat / Distillation
65
+
66
+ Every 2-4 sessions (or at the end of a significant task), the agent should:
67
+
68
+ 1. Read recent files in `memory/`.
69
+ 2. Update `MEMORY.md` with distilled, short-term-relevant facts.
70
+ 3. Promote durable facts from `_Inbox/` to `Memory/`, `Knowledge/`, `Journal/`, or `Notes/`.
71
+ 4. Archive or delete obsolete raw logs.
72
+
73
+ Keep `MEMORY.md` under ~500 words. If it grows, move long-lived facts to `Knowledge/` or `Memory/` and keep only active context in `MEMORY.md`.
74
+
75
+ ## Frontmatter Rules
76
+
77
+ The MCP server manages note frontmatter automatically. Callers should **not** include YAML frontmatter delimiters (`---`) inside `content`.
78
+
79
+ ### Server-managed fields
80
+
81
+ | Field | Source | Behavior |
82
+ |-------|--------|----------|
83
+ | `title` | `title` parameter or derived from path | Always present; server value wins over any embedded value. |
84
+ | `tags` | `tags` parameter plus any embedded tags | Union of caller tags and embedded tags, sorted, deduplicated. |
85
+ | `created` | First save timestamp | Preserved across updates. |
86
+ | `updated` | Current save timestamp | Refreshed on every save. |
87
+
88
+ ### Caller responsibilities
89
+
90
+ - Pass `title` and `tags` as top-level parameters of `create_note` / `update_note`.
91
+ - Keep `content` as the Markdown body only.
92
+ - If `content` accidentally contains a frontmatter block, the server extracts it, merges the fields, and writes a single valid block.
93
+
94
+ ## Available MCP Tools
95
+
96
+ | Tool | Purpose |
97
+ |------|---------|
98
+ | `search_notes` | Find relevant notes. Prefer `mode: "hybrid"`. |
99
+ | `read_note` | Read a specific note by path. |
100
+ | `create_note` | Create a new note in the correct layer. |
101
+ | `update_note` | Append or replace content. Use `append` to preserve history. |
102
+ | `delete_note` | Remove a note. Use sparingly. |
103
+ | `list_notes` | List notes, optionally filtered by folder. |
104
+ | `get_related_notes` | Explore graph relationships from a note. |
105
+ | `sync_from_bundle` | Re-index the skill bundle and local vault. |
106
+ | `learn_from_text` | Detect concepts/decisions in text and auto-create notes. |
107
+
108
+ ## Note Paths
109
+
110
+ Use English folder names and English note content:
111
+
112
+ - `Memory/profile-user.md`
113
+ - `Knowledge/obsidian-mcp-setup.md`
114
+ - `Journal/2026-06-15-project-brief.md`
115
+ - `Notes/2026-06-15-ml-concepts.md`
116
+ - `_Inbox/proposed-knowledge-2026-06-15.md`
117
+
118
+ ## Privacy Rules
119
+
120
+ Never persist in the vault:
121
+
122
+ - API keys, secrets, tokens, passwords
123
+ - Private keys or certificates
124
+ - `.env` contents
125
+ - Personal identifiable information (PII)
126
+
127
+ The server has a privacy filter, but avoid sensitive input regardless. Review working memory before promoting anything to curated or structured layers.
128
+
129
+ ## Configuration Reminder
130
+
131
+ The server must be installed and added to the agent's MCP config:
132
+
133
+ ```toml
134
+ [mcpServers.obsidian-mcp]
135
+ command = "/path/to/servers/obsidian-mcp/.venv/bin/python"
136
+ args = ["-m", "obsidian_mcp.main"]
137
+ ```
138
+
139
+ See `servers/obsidian-mcp/README.md` for full setup instructions.
140
+
141
+ ## Migration from Flat Folders
142
+
143
+ Old flat folders (`concepts/`, `decisions/`, `projects/`, `dashboards/`) should be migrated to the new layers:
144
+
145
+ - `concepts/` → `Knowledge/` (durable) or `Notes/` (transient)
146
+ - `decisions/` → `Knowledge/`
147
+ - `projects/` → `Journal/` (active) or `Knowledge/` (reference)
148
+ - `dashboards/` → `Journal/`
149
+
150
+ ## Skill Memory & Context Pattern
151
+
152
+ Every skill in the bundle must access the local Obsidian vault at `~/.lea` **only** through the `obsidian-second-brain` skill. Never read or write vault files directly with `Read`, `Edit`, `Write`, or `Bash`.
153
+
154
+ ### Before acting
155
+
156
+ Invoke the `obsidian-second-brain` skill via the `Skill` tool. It will:
157
+
158
+ 1. Read `AGENT.md` once per session if not already loaded.
159
+ 2. Read `MEMORY.md` at the start of the task.
160
+ 3. Search the layers relevant to this skill's role (see table below).
161
+
162
+ If the vault or MCP server is unavailable, continue without memory.
163
+
164
+ ### After acting
165
+
166
+ Invoke the `obsidian-second-brain` skill again to persist outcomes to the correct layer:
167
+
168
+ - Reusable guides, conventions, or architecture notes → `Knowledge/`
169
+ - Session outcomes, decisions, or findings → `Journal/`
170
+ - User profile facts or preferences → `Memory/`
171
+ - Proposed canonical notes awaiting review → `_Inbox/`
172
+ - Active context and priorities → update `MEMORY.md`
173
+
174
+ ## Per-Skill Memory Targets
175
+
176
+ Each skill in the bundle should read from and write to the layers relevant to its role. See `skills/obsidian-second-brain/SKILL.md` for tool usage details.
177
+
178
+ | Skill | Read at start | Persist at end |
179
+ |-------|---------------|----------------|
180
+ | `orchestrator` | `MEMORY.md`, `Memory/preferences.md` | User priorities/context to `MEMORY.md`; unclear items to `_Inbox/` |
181
+ | `architect` | `Knowledge/`, `Memory/`, `Journal/decisions*` | Specs rationale to `Knowledge/`; ADRs to `Knowledge/` |
182
+ | `designer` | `Memory/preferences.md`, `Journal/design*`, `Knowledge/brand*` | Design direction to `Journal/`; reusable systems to `Knowledge/` |
183
+ | `engineer` | `Knowledge/`, `Journal/`, `Memory/` | Implementation notes to `Journal/`; reusable patterns to `Knowledge/` |
184
+ | `reviewer` | `Knowledge/conventions*`, `Journal/decisions*`, `Memory/` | Review findings to `Journal/`; process updates to `Knowledge/` |
185
+ | `shipper` | `Knowledge/conventions*`, `Memory/preferences.md` | Shipping log to `Journal/` |
186
+ | `docs-writer` | `Knowledge/`, `Memory/preferences.md`, `Journal/` | New/updated docs to `Knowledge/` |
187
+ | `researcher` | `Knowledge/`, `Journal/` | Research summaries to `Knowledge/` or `_Inbox/` |
188
+ | `maintainer` | `Knowledge/`, `Journal/incidents*` | Incident/debt notes to `Journal/`; runbooks to `Knowledge/` |
189
+ | `product-manager` | `Memory/preferences.md`, `Journal/`, `Knowledge/` | Decisions/metrics to `Knowledge/` or `Journal/` |
190
+ | `tester` | `Knowledge/`, `Journal/bugs*` | Test strategies/heuristics to `Knowledge/` |
@@ -0,0 +1,77 @@
1
+ # Skill Anatomy
2
+
3
+ Guide for writing new skills in the Loop Engineering Agents project.
4
+
5
+ ---
6
+
7
+ ## File Structure
8
+
9
+ ```
10
+ skills/<skill-name>/
11
+ ├── SKILL.md # Required. Instructions and frontmatter.
12
+ └── references/ # Optional. Docs loaded into context as needed.
13
+ └── templates/ # Optional. Reusable templates.
14
+ ```
15
+
16
+ For skills that need executable helpers, prefer scripts in the top-level `scripts/` folder rather than bundling them inside the skill.
17
+
18
+ ---
19
+
20
+ ## SKILL.md Frontmatter
21
+
22
+ Every `SKILL.md` must start with YAML frontmatter:
23
+
24
+ ```yaml
25
+ ---
26
+ name: skill-name
27
+ description: When to trigger and what the skill does. Be specific and slightly pushy — include contexts where the skill should be used even if the user does not explicitly name it.
28
+ ---
29
+ ```
30
+
31
+ ### name
32
+
33
+ - Must match the directory name
34
+ - Lowercase, kebab-case
35
+
36
+ ### description
37
+
38
+ - Primary triggering mechanism
39
+ - Include what the skill does AND when to use it
40
+ - Mention related keywords and adjacent contexts
41
+ - 50-200 words is a good range
42
+
43
+ ---
44
+
45
+ ## SKILL.md Body
46
+
47
+ Keep the body under 500 lines when possible. Use progressive disclosure:
48
+
49
+ 1. **ROLE** — What the skill is responsible for
50
+ 2. **MODE** — What it must and must never do
51
+ 3. **WORKFLOW** — Step-by-step process
52
+ 4. **RESPONSE RULES** — How to behave and respond
53
+ 5. **ANTI-PATTERNS** — Common mistakes to avoid
54
+
55
+ ### Tone
56
+
57
+ - Use imperative form for instructions
58
+ - Explain why things matter instead of heavy-handed MUSTs
59
+ - Be specific in examples
60
+ - Preserve letter-based navigation at the end
61
+
62
+ ---
63
+
64
+ ## Validation
65
+
66
+ Run the validator after creating or editing a skill:
67
+
68
+ ```bash
69
+ python scripts/validate-skills.py
70
+ ```
71
+
72
+ This checks:
73
+ - `SKILL.md` exists
74
+ - Frontmatter is parseable
75
+ - Required fields (`name`, `description`) are present
76
+ - `name` matches the directory name
77
+ - Description is not too short
@@ -0,0 +1,64 @@
1
+ # Workflow Reference
2
+
3
+ Complete workflow for the Loop Engineering Agents team.
4
+
5
+ ---
6
+
7
+ ## Team Roles
8
+
9
+ | Role | File | Responsibility |
10
+ |------|------|----------------|
11
+ | Orchestrator | `skills/orchestrator/SKILL.md` | Context discovery and routing |
12
+ | Architect | `skills/architect/SKILL.md` | Specs, contracts, architecture |
13
+ | Designer | `skills/designer/SKILL.md` | Visual/UI direction |
14
+ | Engineer | `skills/engineer/SKILL.md` | Implementation and tests |
15
+ | Reviewer | `skills/reviewer/SKILL.md` | Code review and quality gate |
16
+ | Shipper | `skills/shipper/SKILL.md` | Git operations and PR |
17
+ | Security-Guard | `skills/security-guard/SKILL.md` | Deep-dive security review |
18
+ | Accessibility-Auditor | `skills/accessibility-auditor/SKILL.md` | Accessibility and WCAG review |
19
+
20
+ ---
21
+
22
+ ## Flow Diagram
23
+
24
+ ```mermaid
25
+ flowchart TD
26
+ O["🎯 Orchestrator<br>Discovery & Routing"] --> A["🏗️ Architect<br>Specs & Architecture"]
27
+ A --> D["🎨 Designer<br>UI/UX Direction"]
28
+ A --> E["🔧 Engineer<br>Implementation"]
29
+ D --> E
30
+ E --> R["🔍 Reviewer<br>Quality Gate"]
31
+ R --> S["🚀 Shipper<br>Git & PR"]
32
+ S --> O
33
+
34
+ SG["🛡️ Security-Guard<br>Security Review"] -.-> R
35
+ AA["♿ Accessibility-Auditor<br>Accessibility Review"] -.-> R
36
+ R -.-> SG
37
+ R -.-> AA
38
+ SG --> E
39
+ AA --> E
40
+
41
+ style O fill:#01579b,color:#fff
42
+ style A fill:#e65100,color:#fff
43
+ style D fill:#6a1b9a,color:#fff
44
+ style E fill:#1b5e20,color:#fff
45
+ style R fill:#b71c1c,color:#fff
46
+ style S fill:#00695c,color:#fff
47
+ style SG fill:#b71c1c,color:#fff
48
+ style AA fill:#6a1b9a,color:#fff
49
+ ```
50
+
51
+ ---
52
+
53
+ ## Routing Rules
54
+
55
+ 1. **Orchestrator ALWAYS sends to Architect first** — never directly to Designer or Engineer.
56
+ 2. **Architect is the gatekeeper** — creates specs and routes to Designer (UI) or Engineer (code).
57
+ 3. **Designer acts BEFORE Engineer** — visual spec before implementation.
58
+ 4. **Engineer never does git or review** — routes to Reviewer after BUILD.
59
+ 5. **Reviewer is the quality gate** — routes to Shipper if clean, or back to Engineer/Architect if issues are found.
60
+ 6. **Security-Guard and Accessibility-Auditor are optional review specialists** — invoked by the Orchestrator or Reviewer when the change involves security-sensitive work or UI accessibility. They report findings back to the Engineer or Reviewer and do not touch git.
61
+ 7. **Shipper is the only one who touches git** — commit, branch, push, PR.
62
+ 8. **All skills return to Orchestrator** — it is the central hub.
63
+
64
+ Each skill reads from the second brain at the start of a task and persists outcomes at the end. The Orchestrator initiates memory reads during discovery; the Shipper updates `Journal/loop-engineering-agents.md` with active/archived spec links.