ingest-codebase
Guide the creation of a high-quality mental model for a codebase. Use when starting a new mental model, when the model feels incomplete or unclear, or when onboarding to understand a system's architecture. Produces domains, capabilities, aspects, and architectural decisions.
来源信息
- 仓库
- Michaelliv/psst
- 最近来源活动
- 2026年1月21日 12:52
- 检测到的 SKILL.md 语言
- 英语
- 星标
- 239
- 分支
- 19
安装方式
默认使用会先检查来源的 Prompt;你也可以切换为直接命令,或下载本地副本。
检查来源文件
决定是否安装前,请先阅读 SKILL.md,以及 SkillsMP 当前展示的配套文件。
正在显示 SKILL.md
SKILL.md
来源说明 · 只读预览- name
- ingest-codebase
- description
- Guide the creation of a high-quality mental model for a codebase. Use when starting a new mental model, when the model feels incomplete or unclear, or when onboarding to understand a system's architecture. Produces domains, capabilities, aspects, and architectural decisions.
# Ingest Codebase - Mental Model Creation
Create a comprehensive mental model that captures how a system *actually works* - not just what files exist, but the conceptual boundaries, responsibilities, decisions, and **connections** that shape it.
## When to Use
- Starting a new mental model for a codebase
- The existing model feels incomplete or shallow
- Onboarding to understand a system's architecture
- After major changes to verify the model is still accurate
## Philosophy
A good domain model answers:
- "What are the core *things* this system deals with?" → **Domains**
- "What can this system *do*?" → **Capabilities** (with `--operates-on` connections!)
- "What concerns cut *across* multiple parts?" → **Aspects** (with `--applies-to` connections!)
- "Why was it built *this way*?" → **Decisions**
**CRITICAL**: Every capability MUST have `--operates-on` linking it to domains. Every aspect MUST have `--applies-to`. Orphan entities indicate incomplete modeling.
---
## Phase 1: Rapid Codebase Survey (Launch 5-10 Agents in Parallel)
Before modeling, understand the codebase structure. **Launch parallel agents** to explore different aspects simultaneously:
```
Agent 1: "Read README.md, package.json, and entry points. What problem does this solve? Who are the users?"
Agent 2: "List all top-level directories. What's in each? (src/, lib/, apps/, packages/, etc.)"
Agent 3: "Find configuration files (*.config.*, .env*, etc.). What can be configured?"
Agent 4: "Search for 'export class' or 'export function' in key directories. What are the main abstractions?"
Agent 5: "Look for test directories. What's being tested? This reveals important functionality."
Agent 6: "Search for API routes, CLI commands, or event handlers. What are the entry points?"
Agent 7: "Look for database models, schemas, or types. What data does this system manage?"
Agent 8: "Search for external integrations (HTTP clients, SDKs, third-party services)."
```
**Output**: A map of the codebase with preliminary domain candidates.
---
## Phase 2: Deep Domain Exploration (Launch 10-20 Agents in Parallel)
For each potential domain area discovered in Phase 1, **launch a dedicated agent**:
```
For EACH major directory or subsystem, launch an agent with this prompt:
"Thoroughly explore [DIRECTORY] in [REPO_PATH]. Answer:
1. What domain concepts exist here? (nouns - things with identity)
2. What capabilities does it provide? (verbs - actions that can be performed)
3. What does this area depend on? (imports, calls to other modules)
4. What depends on this area? (who imports/uses this)
5. What architectural decisions are visible? (patterns, trade-offs)
6. List key files and their purposes.
Be comprehensive - read the actual code, don't just list files."
```
**Example for a large codebase with 15 directories:**
```
Launch 15 agents in parallel, one for each:
- src/auth/
- src/users/
- src/payments/
- src/notifications/
- src/api/
- src/database/
- apps/web/
- apps/mobile/
- packages/shared/
- packages/ui/
- src/infrastructure/
- src/integrations/
- src/jobs/
- scripts/
- etc.
```
**Each agent should return:**
- 2-5 domain candidates with descriptions
- 3-10 capability candidates with what domains they operate on
- 1-3 aspect candidates (cross-cutting concerns)
- 2-5 notable architectural decisions
---
## Phase 3: Build the Mental Model
Based on agent findings, create entities using the `mental` CLI:
### Domains (Nouns - Core Business Concepts)
```bash
mental add domain <Name> \
--desc "What it represents, its lifecycle, key attributes" \
--files "path/to/key/files.ts,another/file.ts"
```
**Good domains:**
- Have clear boundaries ("this is a User, that is a Session")
- Are spoken about by stakeholders (ubiquitous language)
- Would exist even if you rewrote the code
- Typically 8-15 domains for a medium/large codebase
**Anti-patterns to avoid:**
- "Utils", "Helpers", "Services" - code organization, not domains
- "Data", "Info" - too generic
- Implementation details ("RedisCache", "PostgresStore")
### Capabilities (Verbs - What the System Does)
```bash
mental add capability <Name> \
--desc "What it does, when it's triggered" \
--files "path/to/implementation.ts" \
--operates-on "Domain1,Domain2,Domain3"
```
**CRITICAL**: Always include `--operates-on` to connect capabilities to domains!
After adding, verify with:
```bash
mental update capability <Name> --operates-on "Domain1,Domain2"
```
**Good capabilities:**
- Describe behavior, not structure (e.g., "AuthenticateUser" not "AuthService")
- Have clear inputs and outputs
- Typically 15-30 capabilities for a medium/large codebase
### Aspects (Cross-Cutting Concerns)
```bash
mental add aspect <Name> \
--desc "What cross-cutting concern it addresses" \
--files "path/to/implementation.ts" \
--applies-to "Capability1,Domain2,Capability3"
```
**CRITICAL**: Always include `--applies-to` to show what the aspect affects!
**Good aspects:**
- Affect behavior of multiple capabilities
- Are "-ilities": security, reliability, observability, caching, logging
- Typically 5-10 aspects for a medium/large codebase
### Decisions (The Why)
```bash
mental add decision "<What was decided>" \
--why "Rationale, constraints, trade-offs"
```
Capture at least 5-10 significant architectural decisions.
---
## Phase 4: Verify Completeness (Launch 5-10 Verification Agents)
After initial modeling, **launch verification agents** to find gaps:
```
Agent 1: "List all domains in the mental model. For each, what capabilities operate on it?
Flag any domains with zero capabilities - these are orphans that need capabilities added."
Agent 2: "List all capabilities. Do they all have operates-on connections?
Flag any without connections and suggest which domains they should connect to."
Agent 3: "List all aspects. Do they all have applies-to connections?
Flag any without connections and suggest what they should apply to."
Agent 4: "Compare the directory structure to the mental model.
Are there major directories not covered by any domain? List gaps."
Agent 5: "Review the decisions captured. Are there obvious architectural patterns
(monorepo, microservices, event-driven, etc.) not documented? What's missing?"
Agent 6: "For each domain, are there CRUD-like capabilities? (Create, Read, Update, Delete, List)
Many domains should have management capabilities - flag domains that seem incomplete."
```
### Quality Checklist
Before considering the model complete:
- [ ] **Coverage**: Every significant directory maps to at least one entity
- [ ] **No orphan domains**: Every domain has at least one capability operating on it
- [ ] **No orphan capabilities**: Every capability has `--operates-on` connections
- [ ] **No orphan aspects**: Every aspect has `--applies-to` connections
- [ ] **Decisions captured**: At least 5-10 architectural decisions documented
- [ ] **Reasonable granularity**: 8-15 domains, 15-30 capabilities for medium codebase
- [ ] **Grounded in code**: Entities map to real files, not theoretical concepts
---
## Phase 5: Fill Gaps (Iterate Until Complete)
If gaps are found, **launch targeted agents** to fill them:
```
"Domain X has no capabilities. Explore the files for X and find what actions/operations
can be performed on it. Look for: create, update, delete, list, validate, transform, etc."
"Capability Y has no operates-on. Read the implementation and determine which domains
it actually works with. What data does it read? What does it modify?"
"Directory Z is not covered by the model. Explore it thoroughly and determine if it
represents a new domain, capabilities for existing domains, or cross-cutting aspects."
```
Use `mental update` to fix connections:
```bash
mental update capability <Name> --operates-on "Domain1,Domain2"
mental update aspect <Name> --applies-to "Capability1,Domain2"
```
---
## Scaling Guidelines
| Codebase Size | Domains | Capabilities | Aspects | Decisions | Total Agents |
|---------------|---------|--------------|---------|-----------|--------------|
| Small (<50k LOC) | 4-8 | 10-20 | 3-5 | 3-5 | 10-15 |
| Medium (50-200k) | 8-15 | 20-40 | 5-10 | 5-10 | 20-30 |
| Large (200k+) | 12-20 | 30-60 | 8-15 | 10-20 | 30-50 |
**Don't be afraid to launch many agents** - parallel exploration is much faster than sequential.
---
## Example: Ingesting a 300k+ LOC Codebase
**Phase 1** (8 agents in parallel): Quick survey → identify ~20 potential areas
**Phase 2** (20 agents in parallel): Deep dive each area → raw findings
**Phase 3**: Synthesize into 15 domains, 35 capabilities, 8 aspects, 12 decisions
**Phase 4** (6 agents in parallel): Verify completeness → find 8 gaps
**Phase 5** (8 agents in parallel): Fill gaps → add missing connections
**Total: ~42 agent launches, model complete in one session**
---
## Common Mistakes
1. **Not launching enough agents** - One agent can't thoroughly explore a large codebase
2. **Missing `--operates-on`** - Capabilities without domain connections are useless
3. **Missing `--applies-to`** - Aspects without targets don't show their impact
4. **Too shallow** - "Auth" as single capability vs. "Login, Logout, TokenRefresh, PasswordReset, SessionManagement"
5. **Modeling code structure** - Avoid "Controllers", "Services", "Repositories" as domains
6. **Skipping verification** - Always run verification agents to catch gaps
7. **Not iterating** - First pass is never complete; plan for 2-3 rounds
---
## mental CLI Quick Reference
```bash
# Add entities
mental add domain <Name> --desc "..." --files "..."
mental add capability <Name> --desc "..." --files "..." --operates-on "Dom1,Dom2"
mental add aspect <Name> --desc "..." --files "..." --applies-to "Cap1,Dom2"
mental add decision "<What>" --why "..."
# Update connections (IMPORTANT!)
mental update capability <Name> --operates-on "Dom1,Dom2,Dom3"
mental update aspect <Name> --applies-to "Cap1,Cap2,Dom1"
mental update domain <Name> --desc "new description"
# View model
mental show # Text output
mental view # Interactive visualization in browser
# Delete if needed
mental delete domain <Name>
mental delete capability <Name>
mental delete aspect <Name>
```
在 GitHub 查看