sys-indexing-directories
npx skills add https://github.com/bellabe/lean-os --skill sys-indexing-directories
Agent 安装分布
Skill 文档
Directory Indexer
Generate or update index.md files â yellow pages for directories.
Principles
- List what exists â Names and links only
- No judgment â No status, flags, or inference
- Hierarchical nav â â parent · â related
- Docs only â No code files (separate code-mapper skill)
- Skip terminal directories â No index.md in directories with no subdirectories
Excludes
Directories: node_modules, .git, .venv, __pycache__, src, lib, dist, build, vendor
Files: *.py, *.js, *.ts, *.jsx, *.tsx, *.go, *.rs, *.java, *.rb, *.php, *.c, *.cpp, *.h, *.css, *.scss, *.json, *.yaml, *.yml, *.toml, *.lock, *.sum
Directory Types
| Pattern | Subdirs |
|---|---|
artifacts/ |
sales, marketing, engineering, operations, etc |
docs/ |
references, workflows, etc |
meeting-notes/ |
as found |
research/ |
customer, market, etc |
strategy/ |
canvas, goals, financial, etc |
threads/ |
{domain}/{type}/{thread}/ â see Threads Structure |
| any other | as found |
Threads Structure
threads/
âââ index.md
âââ marketing/
â âââ index.md
â âââ {thread_name}/
â âââ 1-input.md â source for index entry (frontmatter)
â âââ 2-hypothesis.md
â âââ 3-implication.md
â âââ 4-decision.md
â âââ 5-actions.md
â âââ 6-learning.md â NO index.md here
âââ sales/
âââ engineering/
âââ operations/
Rules:
- Stop at 1-input.md â If directory contains
1-input.md, it’s a thread leaf. Do NOT create index inside. - Read 1-input.md â Extract
thread_idfrom frontmatter and first heading for parent index entry. - Index at domain level â
marketing/index.mdlists all threads under it.
1-input.md frontmatter (source for index):
---
thread_id: marketing_content-authority_2026q1
goal_id: distribution-q1/1.content-authority
created: 2026-02-01
owner: mkt-content-manager
status: active
---
# Content Authority Execution
Generated index (e.g., marketing/index.md):
# Marketing
- [content-authority_2026q1](./content-authority_2026q1/) â Content Authority Execution
â [Threads](../)
Process
1. Scan
find {root} -type f -name "*.md" \
! -path "*/node_modules/*" \
! -path "*/.git/*" \
! -path "*/src/*" \
! -path "*/lib/*" \
! -path "*/dist/*" \
! -path "*/build/*" \
! -path "*/vendor/*"
2. Check for Terminal Directory
# Terminal = has NO subdirectories (only files)
# Do NOT create index.md in terminal directories
# Instead, parent index lists their contents under ## heading
if directory has subdirectories:
â CREATE index.md (lists files + subdirs)
else:
â SKIP index.md â parent will bubble up contents
3. Check for Thread Leaf
# If 1-input.md exists, this is a thread â do NOT index inside
if [ -f "{dir}/1-input.md" ]; then
# Skip â parent will index this via 1-input.md frontmatter
exit
fi
4. List
For .md files: - [{name}](./{name}.md) â {snapshot}
For non-terminal dirs: - [{name}](./{name}/) â {snapshot}
For terminal dirs: bubble up contents under ## {dir_name} heading:
## {dir_name}
- [{file}](./{dir_name}/{file}.md) â {snapshot}
For threads (has 1-input.md): read thread_id and first heading from 1-input.md
Description: first heading or first line â max 40 chars, truncate with â¦
5. Link Navigation
â [Parent](../)â [Related](../related/)
6. Recurse
For subdirs with content â generate index â link ââ Skip when:
- Directory contains
1-input.md(thread leaf) - Directory has no subdirectories (terminal â contents bubbled up to parent)
Output Format
# {Directory Name}
- [{item}](./{item}/) â {snapshot}
- [{item}](./{item}.md) â {snapshot}
â [Parent](../)
Examples
Artifacts:
# Artifacts
## sales
- [q4-deck](./sales/q4-deck/) â Q4 investor pitch materials
- [prospects](./sales/prospects/) â Enterprise lead tracking
## engineering
- [auth-service](./engineering/auth-service/) â OAuth2 implementation
â [Strategy](../strategy/) · [Threads](../threads/)
Threads (domain level):
# Marketing
- [campaigns](./campaigns/) â Product launch campaigns
- [content](./content/) â Blog and social content
â [Threads](../)
Threads (domain level â reads from 1-input.md):
# Marketing
- [content-authority_2026q1](./content-authority_2026q1/) â Content Authority Execution
- [github-organic_2026q1](./github-organic_2026q1/) â GitHub Organic Growth Execution
â [Threads](../)
Strategy (canvas is terminal â files bubble up):
# Strategy
- [Goals](./goals/) â OKRs and milestones
## Canvas
- [00.mode](./canvas/00.mode.md) â Business Model Mode
- [01.context](./canvas/01.context.md) â Strategic Context (KBOS)
â [Artifacts](../artifacts/)
Boundaries
Does: List .md files, read 1-input.md for threads, generate links, build navigation
Does NOT:
- Index code files
- Create index inside thread dirs (with 1-input.md)
- Create index in terminal directories (no subdirs)
- Infer status or add judgment
Error Handling
| Situation | Action |
|---|---|
| Directory empty | Skip, no index needed |
| No .md files found | Create index listing subdirs only |
| 1-input.md malformed | Use directory name as fallback, warn |
| Circular symlinks | Skip symlinked directories |
| Permission denied | Skip directory, log warning |
| Existing index.md | Overwrite with fresh generation |
References
references/patterns.mdâ Detection patterns for directory types and navigationreferences/templates.mdâ Index.md templates per directory type