ln-650-persistence-performance-auditor
23
总安装量
7
周安装量
#16255
全站排名
安装命令
npx skills add https://github.com/levnikolaevich/claude-code-skills --skill ln-650-persistence-performance-auditor
Agent 安装分布
claude-code
5
antigravity
4
replit
4
opencode
4
openclaw
3
Skill 文档
Paths: File paths (
shared/,references/,../ln-*) are relative to skills repo root. If not found at CWD, locate this SKILL.md directory and go up one level for repo root.
Persistence & Performance Auditor (L2 Coordinator)
Coordinates 3 specialized audit workers to perform database efficiency, transaction correctness, and runtime performance analysis.
Purpose & Scope
- Coordinates 3 audit workers (ln-651, ln-652, ln-653) running in parallel
- Research current best practices for detected DB, ORM, async framework via MCP tools ONCE
- Pass shared context to all workers (token-efficient)
- Aggregate worker results into single consolidated report
- Create single task in Linear under Epic 0 with all findings
- Manual invocation by user; not part of Story pipeline
- Independent from ln-620 (can be run separately or after ln-620)
Workflow
- Discovery: Load tech_stack.md, package manifests, detect DB/ORM/async framework, auto-discover Team ID
- Research: Query MCP tools for DB/ORM/async best practices ONCE
- Build Context: Create contextStore with best practices + DB-specific metadata
- Delegate: 3 workers in PARALLEL
- Aggregate: Collect worker results, calculate scores
- Generate Report: Build consolidated report
- Create Task: Create Linear task in Epic 0 titled “Persistence & Performance Audit: [YYYY-MM-DD]”
Phase 1: Discovery
Load project metadata:
docs/project/tech_stack.md– detect DB, ORM, async framework- Package manifests:
requirements.txt,pyproject.toml,package.json,go.mod - Auto-discover Team ID from
docs/tasks/kanban_board.md
Extract DB-specific metadata:
| Metadata | Source | Example |
|---|---|---|
| Database type | tech_stack.md, docker-compose.yml | PostgreSQL 16 |
| ORM | imports, requirements.txt | SQLAlchemy 2.0 |
| Async framework | imports, requirements.txt | asyncio, FastAPI |
| Session config | grep create_async_engine, sessionmaker |
expire_on_commit=False |
| Triggers/NOTIFY | migration files | pg_notify('job_events', ...) |
| Connection pooling | engine config | pool_size=10, max_overflow=20 |
Scan for triggers:
Grep("pg_notify|NOTIFY|CREATE TRIGGER", path="alembic/versions/")
OR path="migrations/"
â Store: db_config.triggers = [{table, event, function}]
Phase 2: Research Best Practices (ONCE)
For each detected technology:
| Technology | Research Focus |
|---|---|
| SQLAlchemy | Session lifecycle, expire_on_commit, bulk operations, eager/lazy loading |
| PostgreSQL | NOTIFY/LISTEN semantics, transaction isolation, batch operations |
| asyncio | to_thread, blocking detection, event loop best practices |
| FastAPI | Dependency injection scopes, background tasks, async endpoints |
Build contextStore:
{
"tech_stack": {"db": "postgresql", "orm": "sqlalchemy", "async": "asyncio"},
"best_practices": {"sqlalchemy": {...}, "postgresql": {...}, "asyncio": {...}},
"db_config": {
"expire_on_commit": false,
"triggers": [{"table": "jobs", "event": "UPDATE", "function": "notify_job_events"}],
"pool_size": 10
},
"codebase_root": "/project"
}
Phase 3: Delegate to Workers
CRITICAL: All delegations use Task tool with
subagent_type: "general-purpose"for context isolation.
Prompt template:
Task(description: "Audit via ln-65X",
prompt: "Execute ln-65X-{worker}-auditor. Read skill from ln-65X-{worker}-auditor/SKILL.md. Context: {contextStore}",
subagent_type: "general-purpose")
Anti-Patterns:
- â Direct Skill tool invocation without Task wrapper
- â Any execution bypassing subagent context isolation
Workers (ALL 3 in PARALLEL):
| # | Worker | Priority | What It Audits |
|---|---|---|---|
| 1 | ln-651-query-efficiency-auditor | HIGH | Redundant queries, N-UPDATE loops, over-fetching, caching scope |
| 2 | ln-652-transaction-correctness-auditor | HIGH | Commit patterns, trigger interaction, transaction scope, rollback |
| 3 | ln-653-runtime-performance-auditor | MEDIUM | Blocking IO in async, allocations, sync sleep, string concat |
Invocation (3 workers in PARALLEL):
FOR EACH worker IN [ln-651, ln-652, ln-653]:
Task(description: "Audit via " + worker,
prompt: "Execute " + worker + ". Read skill. Context: " + JSON.stringify(contextStore),
subagent_type: "general-purpose")
Phase 4: Aggregate Results
Collect results from workers:
{
"category": "Query Efficiency",
"score": 6,
"total_issues": 8,
"findings": [...]
}
Aggregation steps:
- Merge findings from all 3 workers
- Calculate overall score: average of 3 category scores
- Sum severity counts across all workers
- Sort findings by severity (CRITICAL â HIGH â MEDIUM â LOW)
Output Format
## Persistence & Performance Audit Report - [DATE]
### Executive Summary
[2-3 sentences on overall persistence/performance health]
### Compliance Score
| Category | Score | Notes |
|----------|-------|-------|
| Query Efficiency | X/10 | ... |
| Transaction Correctness | X/10 | ... |
| Runtime Performance | X/10 | ... |
| **Overall** | **X/10** | |
### Severity Summary
| Severity | Count |
|----------|-------|
| Critical | X |
| High | X |
| Medium | X |
| Low | X |
### Findings by Category
#### 1. Query Efficiency
| Severity | Location | Issue | Recommendation | Effort |
|----------|----------|-------|----------------|--------|
| HIGH | job_processor.py:434 | Redundant entity fetch | Pass object not ID | S |
#### 2. Transaction Correctness
| Severity | Location | Issue | Recommendation | Effort |
|----------|----------|-------|----------------|--------|
| CRITICAL | job_processor.py:412 | Missing intermediate commits | Add commit at milestones | S |
#### 3. Runtime Performance
| Severity | Location | Issue | Recommendation | Effort |
|----------|----------|-------|----------------|--------|
| HIGH | job_processor.py:444 | Blocking read_bytes() in async | Use aiofiles/to_thread | S |
### Recommended Actions (Priority-Sorted)
| Priority | Category | Location | Issue | Recommendation | Effort |
|----------|----------|----------|-------|----------------|--------|
| CRITICAL | Transaction | ... | Missing commits | Add strategic commits | S |
| HIGH | Query | ... | Redundant fetch | Pass object not ID | S |
### Sources Consulted
- SQLAlchemy best practices: [URL]
- PostgreSQL NOTIFY docs: [URL]
- Python asyncio-dev: [URL]
Phase 5: Create Linear Task
Create task in Epic 0:
- Title:
Persistence & Performance Audit: [YYYY-MM-DD] - Description: Full report from Phase 4 (markdown format)
- Team: Auto-discovered from kanban_board.md
- Epic: 0 (technical debt / refactoring epic)
- Labels:
refactoring,performance,audit - Priority: Based on highest severity findings
Critical Rules
- Single context gathering: Research best practices ONCE, pass contextStore to all workers
- Parallel execution: All 3 workers run in PARALLEL
- Trigger discovery: Scan migrations for triggers/NOTIFY before delegating (pass to ln-652)
- Metadata-only loading: Coordinator loads metadata; workers load full file contents
- Single task: Create ONE task with all findings; do not create multiple tasks
- Do not audit: Coordinator orchestrates only; audit logic lives in workers
Definition of Done
- Tech stack discovered (DB type, ORM, async framework)
- DB-specific metadata extracted (triggers, session config, pool settings)
- Best practices researched via MCP tools
- contextStore built and passed to workers
- All 3 workers invoked in PARALLEL and completed
- Results aggregated with severity-sorted findings
- Compliance score calculated per category + overall
- Executive Summary included
- Linear task created in Epic 0 with full report
- Sources consulted listed with URLs
Workers
- ln-651-query-efficiency-auditor
- ln-652-transaction-correctness-auditor
- ln-653-runtime-performance-auditor
Reference Files
- Tech stack:
docs/project/tech_stack.md - Kanban board:
docs/tasks/kanban_board.md
Version: 1.0.0 Last Updated: 2026-02-04