@heyai-rules/pilo-masterkit 1.2.2
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/.agent/agents/PILO_MASTER.md +77 -0
- package/.agent/agents/architect.md +211 -0
- package/.agent/agents/backend-specialist.md +263 -0
- package/.agent/agents/build-error-resolver.md +114 -0
- package/.agent/agents/chief-of-staff.md +151 -0
- package/.agent/agents/code-archaeologist.md +106 -0
- package/.agent/agents/code-reviewer.md +237 -0
- package/.agent/agents/cpp-build-resolver.md +90 -0
- package/.agent/agents/cpp-reviewer.md +72 -0
- package/.agent/agents/database-architect.md +226 -0
- package/.agent/agents/database-reviewer.md +91 -0
- package/.agent/agents/debugger.md +225 -0
- package/.agent/agents/devops-engineer.md +242 -0
- package/.agent/agents/doc-updater.md +107 -0
- package/.agent/agents/docs-lookup.md +68 -0
- package/.agent/agents/documentation-writer.md +104 -0
- package/.agent/agents/e2e-runner.md +107 -0
- package/.agent/agents/explorer-agent.md +73 -0
- package/.agent/agents/flutter-reviewer.md +243 -0
- package/.agent/agents/frontend-specialist.md +593 -0
- package/.agent/agents/game-developer.md +162 -0
- package/.agent/agents/go-build-resolver.md +94 -0
- package/.agent/agents/go-reviewer.md +76 -0
- package/.agent/agents/harness-optimizer.md +35 -0
- package/.agent/agents/java-build-resolver.md +153 -0
- package/.agent/agents/java-reviewer.md +92 -0
- package/.agent/agents/kotlin-build-resolver.md +118 -0
- package/.agent/agents/kotlin-reviewer.md +159 -0
- package/.agent/agents/loop-operator.md +36 -0
- package/.agent/agents/mobile-developer.md +377 -0
- package/.agent/agents/orchestrator.md +416 -0
- package/.agent/agents/penetration-tester.md +188 -0
- package/.agent/agents/performance-optimizer.md +187 -0
- package/.agent/agents/planner.md +212 -0
- package/.agent/agents/product-manager.md +112 -0
- package/.agent/agents/product-owner.md +95 -0
- package/.agent/agents/project-planner.md +406 -0
- package/.agent/agents/python-reviewer.md +98 -0
- package/.agent/agents/pytorch-build-resolver.md +120 -0
- package/.agent/agents/qa-automation-engineer.md +103 -0
- package/.agent/agents/refactor-cleaner.md +85 -0
- package/.agent/agents/rust-build-resolver.md +148 -0
- package/.agent/agents/rust-reviewer.md +94 -0
- package/.agent/agents/security-auditor.md +170 -0
- package/.agent/agents/security-reviewer.md +108 -0
- package/.agent/agents/seo-specialist.md +111 -0
- package/.agent/agents/tdd-guide.md +91 -0
- package/.agent/agents/test-engineer.md +158 -0
- package/.agent/agents/typescript-reviewer.md +112 -0
- package/.agent/rules/ARCHITECTURAL_BLUEPRINTS.md +62 -0
- package/.agent/rules/CODE_CRAFTSMANSHIP.md +69 -0
- package/.agent/rules/CORE_RULES.md +72 -0
- package/.agent/rules/PROJECT_MAP.md +58 -0
- package/.agent/rules/QUALITY_ASSURANCE.md +54 -0
- package/.agent/rules/SECURITY_ARMOR.md +44 -0
- package/.agent/rules/VERSION_ORCHESTRATION.md +64 -0
- package/.agent/rules/WORKFLOW_ORCHESTRATION.md +55 -0
- package/.agent/scripts/auto_preview.py +148 -0
- package/.agent/scripts/checklist.py +217 -0
- package/.agent/scripts/session_manager.py +120 -0
- package/.agent/scripts/verify_all.py +327 -0
- package/.agent/skills/api-patterns/SKILL.md +81 -0
- package/.agent/skills/api-patterns/api-style.md +42 -0
- package/.agent/skills/api-patterns/auth.md +24 -0
- package/.agent/skills/api-patterns/documentation.md +26 -0
- package/.agent/skills/api-patterns/graphql.md +41 -0
- package/.agent/skills/api-patterns/rate-limiting.md +31 -0
- package/.agent/skills/api-patterns/response.md +37 -0
- package/.agent/skills/api-patterns/rest.md +40 -0
- package/.agent/skills/api-patterns/scripts/api_validator.py +211 -0
- package/.agent/skills/api-patterns/security-testing.md +122 -0
- package/.agent/skills/api-patterns/trpc.md +41 -0
- package/.agent/skills/api-patterns/versioning.md +22 -0
- package/.agent/skills/app-builder/SKILL.md +75 -0
- package/.agent/skills/app-builder/agent-coordination.md +71 -0
- package/.agent/skills/app-builder/feature-building.md +53 -0
- package/.agent/skills/app-builder/project-detection.md +34 -0
- package/.agent/skills/app-builder/scaffolding.md +118 -0
- package/.agent/skills/app-builder/tech-stack.md +41 -0
- package/.agent/skills/app-builder/templates/SKILL.md +39 -0
- package/.agent/skills/app-builder/templates/astro-static/TEMPLATE.md +76 -0
- package/.agent/skills/app-builder/templates/chrome-extension/TEMPLATE.md +92 -0
- package/.agent/skills/app-builder/templates/cli-tool/TEMPLATE.md +88 -0
- package/.agent/skills/app-builder/templates/electron-desktop/TEMPLATE.md +88 -0
- package/.agent/skills/app-builder/templates/express-api/TEMPLATE.md +83 -0
- package/.agent/skills/app-builder/templates/flutter-app/TEMPLATE.md +90 -0
- package/.agent/skills/app-builder/templates/monorepo-turborepo/TEMPLATE.md +90 -0
- package/.agent/skills/app-builder/templates/nextjs-fullstack/TEMPLATE.md +122 -0
- package/.agent/skills/app-builder/templates/nextjs-saas/TEMPLATE.md +122 -0
- package/.agent/skills/app-builder/templates/nextjs-static/TEMPLATE.md +169 -0
- package/.agent/skills/app-builder/templates/nuxt-app/TEMPLATE.md +134 -0
- package/.agent/skills/app-builder/templates/python-fastapi/TEMPLATE.md +83 -0
- package/.agent/skills/app-builder/templates/react-native-app/TEMPLATE.md +119 -0
- package/.agent/skills/architecture/SKILL.md +55 -0
- package/.agent/skills/architecture/context-discovery.md +43 -0
- package/.agent/skills/architecture/examples.md +94 -0
- package/.agent/skills/architecture/pattern-selection.md +68 -0
- package/.agent/skills/architecture/patterns-reference.md +50 -0
- package/.agent/skills/architecture/trade-off-analysis.md +77 -0
- package/.agent/skills/bash-linux/SKILL.md +199 -0
- package/.agent/skills/behavioral-modes/SKILL.md +242 -0
- package/.agent/skills/brainstorming/SKILL.md +163 -0
- package/.agent/skills/brainstorming/dynamic-questioning.md +350 -0
- package/.agent/skills/clean-code/SKILL.md +201 -0
- package/.agent/skills/code-review-checklist/SKILL.md +109 -0
- package/.agent/skills/database-design/SKILL.md +52 -0
- package/.agent/skills/database-design/database-selection.md +43 -0
- package/.agent/skills/database-design/indexing.md +39 -0
- package/.agent/skills/database-design/migrations.md +48 -0
- package/.agent/skills/database-design/optimization.md +36 -0
- package/.agent/skills/database-design/orm-selection.md +30 -0
- package/.agent/skills/database-design/schema-design.md +56 -0
- package/.agent/skills/database-design/scripts/schema_validator.py +172 -0
- package/.agent/skills/deployment-procedures/SKILL.md +241 -0
- package/.agent/skills/doc.md +177 -0
- package/.agent/skills/documentation-templates/SKILL.md +194 -0
- package/.agent/skills/frontend-design/SKILL.md +452 -0
- package/.agent/skills/frontend-design/animation-guide.md +331 -0
- package/.agent/skills/frontend-design/color-system.md +311 -0
- package/.agent/skills/frontend-design/decision-trees.md +418 -0
- package/.agent/skills/frontend-design/motion-graphics.md +306 -0
- package/.agent/skills/frontend-design/scripts/accessibility_checker.py +183 -0
- package/.agent/skills/frontend-design/scripts/ux_audit.py +722 -0
- package/.agent/skills/frontend-design/typography-system.md +345 -0
- package/.agent/skills/frontend-design/ux-psychology.md +1116 -0
- package/.agent/skills/frontend-design/visual-effects.md +383 -0
- package/.agent/skills/game-development/2d-games/SKILL.md +119 -0
- package/.agent/skills/game-development/3d-games/SKILL.md +135 -0
- package/.agent/skills/game-development/SKILL.md +167 -0
- package/.agent/skills/game-development/game-art/SKILL.md +185 -0
- package/.agent/skills/game-development/game-audio/SKILL.md +190 -0
- package/.agent/skills/game-development/game-design/SKILL.md +129 -0
- package/.agent/skills/game-development/mobile-games/SKILL.md +108 -0
- package/.agent/skills/game-development/multiplayer/SKILL.md +132 -0
- package/.agent/skills/game-development/pc-games/SKILL.md +144 -0
- package/.agent/skills/game-development/vr-ar/SKILL.md +123 -0
- package/.agent/skills/game-development/web-games/SKILL.md +150 -0
- package/.agent/skills/geo-fundamentals/SKILL.md +156 -0
- package/.agent/skills/geo-fundamentals/scripts/geo_checker.py +289 -0
- package/.agent/skills/i18n-localization/SKILL.md +154 -0
- package/.agent/skills/i18n-localization/scripts/i18n_checker.py +241 -0
- package/.agent/skills/intelligent-routing/SKILL.md +335 -0
- package/.agent/skills/lint-and-validate/SKILL.md +45 -0
- package/.agent/skills/lint-and-validate/scripts/lint_runner.py +184 -0
- package/.agent/skills/lint-and-validate/scripts/type_coverage.py +173 -0
- package/.agent/skills/mcp-builder/SKILL.md +176 -0
- package/.agent/skills/mobile-design/SKILL.md +394 -0
- package/.agent/skills/mobile-design/decision-trees.md +516 -0
- package/.agent/skills/mobile-design/mobile-backend.md +491 -0
- package/.agent/skills/mobile-design/mobile-color-system.md +420 -0
- package/.agent/skills/mobile-design/mobile-debugging.md +122 -0
- package/.agent/skills/mobile-design/mobile-design-thinking.md +357 -0
- package/.agent/skills/mobile-design/mobile-navigation.md +458 -0
- package/.agent/skills/mobile-design/mobile-performance.md +767 -0
- package/.agent/skills/mobile-design/mobile-testing.md +356 -0
- package/.agent/skills/mobile-design/mobile-typography.md +433 -0
- package/.agent/skills/mobile-design/platform-android.md +666 -0
- package/.agent/skills/mobile-design/platform-ios.md +561 -0
- package/.agent/skills/mobile-design/scripts/mobile_audit.py +670 -0
- package/.agent/skills/mobile-design/touch-psychology.md +537 -0
- package/.agent/skills/nextjs-react-expert/1-async-eliminating-waterfalls.md +351 -0
- package/.agent/skills/nextjs-react-expert/2-bundle-bundle-size-optimization.md +240 -0
- package/.agent/skills/nextjs-react-expert/3-server-server-side-performance.md +490 -0
- package/.agent/skills/nextjs-react-expert/4-client-client-side-data-fetching.md +264 -0
- package/.agent/skills/nextjs-react-expert/5-rerender-re-render-optimization.md +581 -0
- package/.agent/skills/nextjs-react-expert/6-rendering-rendering-performance.md +432 -0
- package/.agent/skills/nextjs-react-expert/7-js-javascript-performance.md +684 -0
- package/.agent/skills/nextjs-react-expert/8-advanced-advanced-patterns.md +150 -0
- package/.agent/skills/nextjs-react-expert/9-cache-components.md +103 -0
- package/.agent/skills/nextjs-react-expert/SKILL.md +293 -0
- package/.agent/skills/nextjs-react-expert/scripts/convert_rules.py +222 -0
- package/.agent/skills/nextjs-react-expert/scripts/react_performance_checker.py +252 -0
- package/.agent/skills/nodejs-best-practices/SKILL.md +333 -0
- package/.agent/skills/parallel-agents/SKILL.md +175 -0
- package/.agent/skills/performance-profiling/SKILL.md +143 -0
- package/.agent/skills/performance-profiling/scripts/lighthouse_audit.py +76 -0
- package/.agent/skills/plan-writing/SKILL.md +152 -0
- package/.agent/skills/powershell-windows/SKILL.md +167 -0
- package/.agent/skills/python-patterns/SKILL.md +441 -0
- package/.agent/skills/red-team-tactics/SKILL.md +199 -0
- package/.agent/skills/rust-pro/SKILL.md +176 -0
- package/.agent/skills/seo-fundamentals/SKILL.md +129 -0
- package/.agent/skills/seo-fundamentals/scripts/seo_checker.py +219 -0
- package/.agent/skills/server-management/SKILL.md +161 -0
- package/.agent/skills/systematic-debugging/SKILL.md +109 -0
- package/.agent/skills/tailwind-patterns/SKILL.md +269 -0
- package/.agent/skills/tdd-workflow/SKILL.md +149 -0
- package/.agent/skills/testing-patterns/SKILL.md +178 -0
- package/.agent/skills/testing-patterns/scripts/test_runner.py +219 -0
- package/.agent/skills/ui-ux-pro-max/SKILL.md +292 -0
- package/.agent/skills/ui-ux-pro-max/data/charts.csv +26 -0
- package/.agent/skills/ui-ux-pro-max/data/colors.csv +97 -0
- package/.agent/skills/ui-ux-pro-max/data/icons.csv +101 -0
- package/.agent/skills/ui-ux-pro-max/data/landing.csv +31 -0
- package/.agent/skills/ui-ux-pro-max/data/products.csv +97 -0
- package/.agent/skills/ui-ux-pro-max/data/react-performance.csv +45 -0
- package/.agent/skills/ui-ux-pro-max/data/stacks/astro.csv +54 -0
- package/.agent/skills/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
- package/.agent/skills/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
- package/.agent/skills/ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -0
- package/.agent/skills/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
- package/.agent/skills/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
- package/.agent/skills/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
- package/.agent/skills/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
- package/.agent/skills/ui-ux-pro-max/data/stacks/react.csv +54 -0
- package/.agent/skills/ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
- package/.agent/skills/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
- package/.agent/skills/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
- package/.agent/skills/ui-ux-pro-max/data/stacks/vue.csv +50 -0
- package/.agent/skills/ui-ux-pro-max/data/styles.csv +68 -0
- package/.agent/skills/ui-ux-pro-max/data/typography.csv +58 -0
- package/.agent/skills/ui-ux-pro-max/data/ui-reasoning.csv +101 -0
- package/.agent/skills/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
- package/.agent/skills/ui-ux-pro-max/data/web-interface.csv +31 -0
- package/.agent/skills/ui-ux-pro-max/scripts/__pycache__/core.cpython-314.pyc +0 -0
- package/.agent/skills/ui-ux-pro-max/scripts/__pycache__/design_system.cpython-314.pyc +0 -0
- package/.agent/skills/ui-ux-pro-max/scripts/__pycache__/search.cpython-314.pyc +0 -0
- package/.agent/skills/ui-ux-pro-max/scripts/core.py +253 -0
- package/.agent/skills/ui-ux-pro-max/scripts/design_system.py +1067 -0
- package/.agent/skills/ui-ux-pro-max/scripts/search.py +114 -0
- package/.agent/skills/vulnerability-scanner/SKILL.md +276 -0
- package/.agent/skills/vulnerability-scanner/checklists.md +121 -0
- package/.agent/skills/vulnerability-scanner/scripts/security_scan.py +458 -0
- package/.agent/skills/web-design-guidelines/SKILL.md +57 -0
- package/.agent/skills/webapp-testing/SKILL.md +187 -0
- package/.agent/skills/webapp-testing/scripts/playwright_runner.py +173 -0
- package/.agent/tasks/lessons.md +40 -0
- package/.agent/tasks/todo.md +33 -0
- package/.agent/workflows/aside.md +164 -0
- package/.agent/workflows/brainstorm.md +113 -0
- package/.agent/workflows/build-fix.md +62 -0
- package/.agent/workflows/checkpoint.md +74 -0
- package/.agent/workflows/claw.md +51 -0
- package/.agent/workflows/code-review.md +40 -0
- package/.agent/workflows/context-budget.md +29 -0
- package/.agent/workflows/cpp-build.md +173 -0
- package/.agent/workflows/cpp-review.md +132 -0
- package/.agent/workflows/cpp-test.md +251 -0
- package/.agent/workflows/create.md +59 -0
- package/.agent/workflows/debug.md +103 -0
- package/.agent/workflows/deploy.md +176 -0
- package/.agent/workflows/devfleet.md +92 -0
- package/.agent/workflows/docs.md +31 -0
- package/.agent/workflows/e2e.md +365 -0
- package/.agent/workflows/enhance.md +63 -0
- package/.agent/workflows/eval.md +120 -0
- package/.agent/workflows/evolve.md +178 -0
- package/.agent/workflows/go-build.md +183 -0
- package/.agent/workflows/go-review.md +148 -0
- package/.agent/workflows/go-test.md +268 -0
- package/.agent/workflows/gradle-build.md +70 -0
- package/.agent/workflows/harness-audit.md +71 -0
- package/.agent/workflows/init-docs.md +46 -0
- package/.agent/workflows/instinct-export.md +66 -0
- package/.agent/workflows/instinct-import.md +114 -0
- package/.agent/workflows/instinct-status.md +59 -0
- package/.agent/workflows/kotlin-build.md +174 -0
- package/.agent/workflows/kotlin-review.md +140 -0
- package/.agent/workflows/kotlin-test.md +312 -0
- package/.agent/workflows/learn-eval.md +116 -0
- package/.agent/workflows/learn.md +70 -0
- package/.agent/workflows/loop-start.md +32 -0
- package/.agent/workflows/loop-status.md +24 -0
- package/.agent/workflows/model-route.md +26 -0
- package/.agent/workflows/multi-backend.md +158 -0
- package/.agent/workflows/multi-execute.md +315 -0
- package/.agent/workflows/multi-frontend.md +158 -0
- package/.agent/workflows/multi-plan.md +268 -0
- package/.agent/workflows/multi-workflow.md +191 -0
- package/.agent/workflows/orchestrate.md +231 -0
- package/.agent/workflows/plan.md +115 -0
- package/.agent/workflows/pm2.md +272 -0
- package/.agent/workflows/preview.md +81 -0
- package/.agent/workflows/projects.md +39 -0
- package/.agent/workflows/promote.md +41 -0
- package/.agent/workflows/prompt-optimize.md +38 -0
- package/.agent/workflows/prune.md +31 -0
- package/.agent/workflows/python-review.md +297 -0
- package/.agent/workflows/quality-gate.md +29 -0
- package/.agent/workflows/refactor-clean.md +80 -0
- package/.agent/workflows/resume-session.md +156 -0
- package/.agent/workflows/rules-distill.md +11 -0
- package/.agent/workflows/rust-build.md +187 -0
- package/.agent/workflows/rust-review.md +142 -0
- package/.agent/workflows/rust-test.md +308 -0
- package/.agent/workflows/save-session.md +275 -0
- package/.agent/workflows/sessions.md +333 -0
- package/.agent/workflows/setup-pm.md +80 -0
- package/.agent/workflows/skill-create.md +174 -0
- package/.agent/workflows/skill-health.md +54 -0
- package/.agent/workflows/status.md +86 -0
- package/.agent/workflows/tdd.md +328 -0
- package/.agent/workflows/test-coverage.md +69 -0
- package/.agent/workflows/test.md +144 -0
- package/.agent/workflows/ui-ux-pro-max.md +296 -0
- package/.agent/workflows/update-codemaps.md +72 -0
- package/.agent/workflows/update-docs.md +84 -0
- package/.agent/workflows/verify.md +59 -0
- package/LICENSE +176 -0
- package/README.md +136 -0
- package/RELEASE.md +36 -0
- package/package.json +79 -0
- package/scripts/release-check.js +55 -0
- package/src/bin/cli.js +78 -0
- package/src/lib/installer.js +140 -0
|
@@ -0,0 +1,297 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Comprehensive Python code review for PEP 8 compliance, type hints, security, and Pythonic idioms. Invokes the python-reviewer agent.
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Python Code Review
|
|
6
|
+
|
|
7
|
+
This command invokes the **python-reviewer** agent for comprehensive Python-specific code review.
|
|
8
|
+
|
|
9
|
+
## What This Command Does
|
|
10
|
+
|
|
11
|
+
1. **Identify Python Changes**: Find modified `.py` files via `git diff`
|
|
12
|
+
2. **Run Static Analysis**: Execute `ruff`, `mypy`, `pylint`, `black --check`
|
|
13
|
+
3. **Security Scan**: Check for SQL injection, command injection, unsafe deserialization
|
|
14
|
+
4. **Type Safety Review**: Analyze type hints and mypy errors
|
|
15
|
+
5. **Pythonic Code Check**: Verify code follows PEP 8 and Python best practices
|
|
16
|
+
6. **Generate Report**: Categorize issues by severity
|
|
17
|
+
|
|
18
|
+
## When to Use
|
|
19
|
+
|
|
20
|
+
Use `/python-review` when:
|
|
21
|
+
- After writing or modifying Python code
|
|
22
|
+
- Before committing Python changes
|
|
23
|
+
- Reviewing pull requests with Python code
|
|
24
|
+
- Onboarding to a new Python codebase
|
|
25
|
+
- Learning Pythonic patterns and idioms
|
|
26
|
+
|
|
27
|
+
## Review Categories
|
|
28
|
+
|
|
29
|
+
### CRITICAL (Must Fix)
|
|
30
|
+
- SQL/Command injection vulnerabilities
|
|
31
|
+
- Unsafe eval/exec usage
|
|
32
|
+
- Pickle unsafe deserialization
|
|
33
|
+
- Hardcoded credentials
|
|
34
|
+
- YAML unsafe load
|
|
35
|
+
- Bare except clauses hiding errors
|
|
36
|
+
|
|
37
|
+
### HIGH (Should Fix)
|
|
38
|
+
- Missing type hints on public functions
|
|
39
|
+
- Mutable default arguments
|
|
40
|
+
- Swallowing exceptions silently
|
|
41
|
+
- Not using context managers for resources
|
|
42
|
+
- C-style looping instead of comprehensions
|
|
43
|
+
- Using type() instead of isinstance()
|
|
44
|
+
- Race conditions without locks
|
|
45
|
+
|
|
46
|
+
### MEDIUM (Consider)
|
|
47
|
+
- PEP 8 formatting violations
|
|
48
|
+
- Missing docstrings on public functions
|
|
49
|
+
- Print statements instead of logging
|
|
50
|
+
- Inefficient string operations
|
|
51
|
+
- Magic numbers without named constants
|
|
52
|
+
- Not using f-strings for formatting
|
|
53
|
+
- Unnecessary list creation
|
|
54
|
+
|
|
55
|
+
## Automated Checks Run
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
# Type checking
|
|
59
|
+
mypy .
|
|
60
|
+
|
|
61
|
+
# Linting and formatting
|
|
62
|
+
ruff check .
|
|
63
|
+
black --check .
|
|
64
|
+
isort --check-only .
|
|
65
|
+
|
|
66
|
+
# Security scanning
|
|
67
|
+
bandit -r .
|
|
68
|
+
|
|
69
|
+
# Dependency audit
|
|
70
|
+
pip-audit
|
|
71
|
+
safety check
|
|
72
|
+
|
|
73
|
+
# Testing
|
|
74
|
+
pytest --cov=app --cov-report=term-missing
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
## Example Usage
|
|
78
|
+
|
|
79
|
+
```text
|
|
80
|
+
User: /python-review
|
|
81
|
+
|
|
82
|
+
Agent:
|
|
83
|
+
# Python Code Review Report
|
|
84
|
+
|
|
85
|
+
## Files Reviewed
|
|
86
|
+
- app/routes/user.py (modified)
|
|
87
|
+
- app/services/auth.py (modified)
|
|
88
|
+
|
|
89
|
+
## Static Analysis Results
|
|
90
|
+
✓ ruff: No issues
|
|
91
|
+
✓ mypy: No errors
|
|
92
|
+
⚠️ black: 2 files need reformatting
|
|
93
|
+
✓ bandit: No security issues
|
|
94
|
+
|
|
95
|
+
## Issues Found
|
|
96
|
+
|
|
97
|
+
[CRITICAL] SQL Injection vulnerability
|
|
98
|
+
File: app/routes/user.py:42
|
|
99
|
+
Issue: User input directly interpolated into SQL query
|
|
100
|
+
```python
|
|
101
|
+
query = f"SELECT * FROM users WHERE id = {user_id}" # Bad
|
|
102
|
+
```
|
|
103
|
+
Fix: Use parameterized query
|
|
104
|
+
```python
|
|
105
|
+
query = "SELECT * FROM users WHERE id = %s" # Good
|
|
106
|
+
cursor.execute(query, (user_id,))
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
[HIGH] Mutable default argument
|
|
110
|
+
File: app/services/auth.py:18
|
|
111
|
+
Issue: Mutable default argument causes shared state
|
|
112
|
+
```python
|
|
113
|
+
def process_items(items=[]): # Bad
|
|
114
|
+
items.append("new")
|
|
115
|
+
return items
|
|
116
|
+
```
|
|
117
|
+
Fix: Use None as default
|
|
118
|
+
```python
|
|
119
|
+
def process_items(items=None): # Good
|
|
120
|
+
if items is None:
|
|
121
|
+
items = []
|
|
122
|
+
items.append("new")
|
|
123
|
+
return items
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
[MEDIUM] Missing type hints
|
|
127
|
+
File: app/services/auth.py:25
|
|
128
|
+
Issue: Public function without type annotations
|
|
129
|
+
```python
|
|
130
|
+
def get_user(user_id): # Bad
|
|
131
|
+
return db.find(user_id)
|
|
132
|
+
```
|
|
133
|
+
Fix: Add type hints
|
|
134
|
+
```python
|
|
135
|
+
def get_user(user_id: str) -> Optional[User]: # Good
|
|
136
|
+
return db.find(user_id)
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
[MEDIUM] Not using context manager
|
|
140
|
+
File: app/routes/user.py:55
|
|
141
|
+
Issue: File not closed on exception
|
|
142
|
+
```python
|
|
143
|
+
f = open("config.json") # Bad
|
|
144
|
+
data = f.read()
|
|
145
|
+
f.close()
|
|
146
|
+
```
|
|
147
|
+
Fix: Use context manager
|
|
148
|
+
```python
|
|
149
|
+
with open("config.json") as f: # Good
|
|
150
|
+
data = f.read()
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
## Summary
|
|
154
|
+
- CRITICAL: 1
|
|
155
|
+
- HIGH: 1
|
|
156
|
+
- MEDIUM: 2
|
|
157
|
+
|
|
158
|
+
Recommendation: ❌ Block merge until CRITICAL issue is fixed
|
|
159
|
+
|
|
160
|
+
## Formatting Required
|
|
161
|
+
Run: `black app/routes/user.py app/services/auth.py`
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
## Approval Criteria
|
|
165
|
+
|
|
166
|
+
| Status | Condition |
|
|
167
|
+
|--------|-----------|
|
|
168
|
+
| ✅ Approve | No CRITICAL or HIGH issues |
|
|
169
|
+
| ⚠️ Warning | Only MEDIUM issues (merge with caution) |
|
|
170
|
+
| ❌ Block | CRITICAL or HIGH issues found |
|
|
171
|
+
|
|
172
|
+
## Integration with Other Commands
|
|
173
|
+
|
|
174
|
+
- Use `/tdd` first to ensure tests pass
|
|
175
|
+
- Use `/code-review` for non-Python specific concerns
|
|
176
|
+
- Use `/python-review` before committing
|
|
177
|
+
- Use `/build-fix` if static analysis tools fail
|
|
178
|
+
|
|
179
|
+
## Framework-Specific Reviews
|
|
180
|
+
|
|
181
|
+
### Django Projects
|
|
182
|
+
The reviewer checks for:
|
|
183
|
+
- N+1 query issues (use `select_related` and `prefetch_related`)
|
|
184
|
+
- Missing migrations for model changes
|
|
185
|
+
- Raw SQL usage when ORM could work
|
|
186
|
+
- Missing `transaction.atomic()` for multi-step operations
|
|
187
|
+
|
|
188
|
+
### FastAPI Projects
|
|
189
|
+
The reviewer checks for:
|
|
190
|
+
- CORS misconfiguration
|
|
191
|
+
- Pydantic models for request validation
|
|
192
|
+
- Response models correctness
|
|
193
|
+
- Proper async/await usage
|
|
194
|
+
- Dependency injection patterns
|
|
195
|
+
|
|
196
|
+
### Flask Projects
|
|
197
|
+
The reviewer checks for:
|
|
198
|
+
- Context management (app context, request context)
|
|
199
|
+
- Proper error handling
|
|
200
|
+
- Blueprint organization
|
|
201
|
+
- Configuration management
|
|
202
|
+
|
|
203
|
+
## Related
|
|
204
|
+
|
|
205
|
+
- Agent: `agents/python-reviewer.md`
|
|
206
|
+
- Skills: `skills/python-patterns/`, `skills/python-testing/`
|
|
207
|
+
|
|
208
|
+
## Common Fixes
|
|
209
|
+
|
|
210
|
+
### Add Type Hints
|
|
211
|
+
```python
|
|
212
|
+
# Before
|
|
213
|
+
def calculate(x, y):
|
|
214
|
+
return x + y
|
|
215
|
+
|
|
216
|
+
# After
|
|
217
|
+
from typing import Union
|
|
218
|
+
|
|
219
|
+
def calculate(x: Union[int, float], y: Union[int, float]) -> Union[int, float]:
|
|
220
|
+
return x + y
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
### Use Context Managers
|
|
224
|
+
```python
|
|
225
|
+
# Before
|
|
226
|
+
f = open("file.txt")
|
|
227
|
+
data = f.read()
|
|
228
|
+
f.close()
|
|
229
|
+
|
|
230
|
+
# After
|
|
231
|
+
with open("file.txt") as f:
|
|
232
|
+
data = f.read()
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
### Use List Comprehensions
|
|
236
|
+
```python
|
|
237
|
+
# Before
|
|
238
|
+
result = []
|
|
239
|
+
for item in items:
|
|
240
|
+
if item.active:
|
|
241
|
+
result.append(item.name)
|
|
242
|
+
|
|
243
|
+
# After
|
|
244
|
+
result = [item.name for item in items if item.active]
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
### Fix Mutable Defaults
|
|
248
|
+
```python
|
|
249
|
+
# Before
|
|
250
|
+
def append(value, items=[]):
|
|
251
|
+
items.append(value)
|
|
252
|
+
return items
|
|
253
|
+
|
|
254
|
+
# After
|
|
255
|
+
def append(value, items=None):
|
|
256
|
+
if items is None:
|
|
257
|
+
items = []
|
|
258
|
+
items.append(value)
|
|
259
|
+
return items
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
### Use f-strings (Python 3.6+)
|
|
263
|
+
```python
|
|
264
|
+
# Before
|
|
265
|
+
name = "Alice"
|
|
266
|
+
greeting = "Hello, " + name + "!"
|
|
267
|
+
greeting2 = "Hello, {}".format(name)
|
|
268
|
+
|
|
269
|
+
# After
|
|
270
|
+
greeting = f"Hello, {name}!"
|
|
271
|
+
```
|
|
272
|
+
|
|
273
|
+
### Fix String Concatenation in Loops
|
|
274
|
+
```python
|
|
275
|
+
# Before
|
|
276
|
+
result = ""
|
|
277
|
+
for item in items:
|
|
278
|
+
result += str(item)
|
|
279
|
+
|
|
280
|
+
# After
|
|
281
|
+
result = "".join(str(item) for item in items)
|
|
282
|
+
```
|
|
283
|
+
|
|
284
|
+
## Python Version Compatibility
|
|
285
|
+
|
|
286
|
+
The reviewer notes when code uses features from newer Python versions:
|
|
287
|
+
|
|
288
|
+
| Feature | Minimum Python |
|
|
289
|
+
|---------|----------------|
|
|
290
|
+
| Type hints | 3.5+ |
|
|
291
|
+
| f-strings | 3.6+ |
|
|
292
|
+
| Walrus operator (`:=`) | 3.8+ |
|
|
293
|
+
| Position-only parameters | 3.8+ |
|
|
294
|
+
| Match statements | 3.10+ |
|
|
295
|
+
| Type unions (`x | None`) | 3.10+ |
|
|
296
|
+
|
|
297
|
+
Ensure your project's `pyproject.toml` or `setup.py` specifies the correct minimum Python version.
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# Quality Gate Command
|
|
2
|
+
|
|
3
|
+
Run the ECC quality pipeline on demand for a file or project scope.
|
|
4
|
+
|
|
5
|
+
## Usage
|
|
6
|
+
|
|
7
|
+
`/quality-gate [path|.] [--fix] [--strict]`
|
|
8
|
+
|
|
9
|
+
- default target: current directory (`.`)
|
|
10
|
+
- `--fix`: allow auto-format/fix where configured
|
|
11
|
+
- `--strict`: fail on warnings where supported
|
|
12
|
+
|
|
13
|
+
## Pipeline
|
|
14
|
+
|
|
15
|
+
1. Detect language/tooling for target.
|
|
16
|
+
2. Run formatter checks.
|
|
17
|
+
3. Run lint/type checks when available.
|
|
18
|
+
4. Produce a concise remediation list.
|
|
19
|
+
|
|
20
|
+
## Notes
|
|
21
|
+
|
|
22
|
+
This command mirrors hook behavior but is operator-invoked.
|
|
23
|
+
|
|
24
|
+
## Arguments
|
|
25
|
+
|
|
26
|
+
$ARGUMENTS:
|
|
27
|
+
- `[path|.]` optional target path
|
|
28
|
+
- `--fix` optional
|
|
29
|
+
- `--strict` optional
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
# Refactor Clean
|
|
2
|
+
|
|
3
|
+
Safely identify and remove dead code with test verification at every step.
|
|
4
|
+
|
|
5
|
+
## Step 1: Detect Dead Code
|
|
6
|
+
|
|
7
|
+
Run analysis tools based on project type:
|
|
8
|
+
|
|
9
|
+
| Tool | What It Finds | Command |
|
|
10
|
+
|------|--------------|---------|
|
|
11
|
+
| knip | Unused exports, files, dependencies | `npx knip` |
|
|
12
|
+
| depcheck | Unused npm dependencies | `npx depcheck` |
|
|
13
|
+
| ts-prune | Unused TypeScript exports | `npx ts-prune` |
|
|
14
|
+
| vulture | Unused Python code | `vulture src/` |
|
|
15
|
+
| deadcode | Unused Go code | `deadcode ./...` |
|
|
16
|
+
| cargo-udeps | Unused Rust dependencies | `cargo +nightly udeps` |
|
|
17
|
+
|
|
18
|
+
If no tool is available, use Grep to find exports with zero imports:
|
|
19
|
+
```
|
|
20
|
+
# Find exports, then check if they're imported anywhere
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## Step 2: Categorize Findings
|
|
24
|
+
|
|
25
|
+
Sort findings into safety tiers:
|
|
26
|
+
|
|
27
|
+
| Tier | Examples | Action |
|
|
28
|
+
|------|----------|--------|
|
|
29
|
+
| **SAFE** | Unused utilities, test helpers, internal functions | Delete with confidence |
|
|
30
|
+
| **CAUTION** | Components, API routes, middleware | Verify no dynamic imports or external consumers |
|
|
31
|
+
| **DANGER** | Config files, entry points, type definitions | Investigate before touching |
|
|
32
|
+
|
|
33
|
+
## Step 3: Safe Deletion Loop
|
|
34
|
+
|
|
35
|
+
For each SAFE item:
|
|
36
|
+
|
|
37
|
+
1. **Run full test suite** — Establish baseline (all green)
|
|
38
|
+
2. **Delete the dead code** — Use Edit tool for surgical removal
|
|
39
|
+
3. **Re-run test suite** — Verify nothing broke
|
|
40
|
+
4. **If tests fail** — Immediately revert with `git checkout -- <file>` and skip this item
|
|
41
|
+
5. **If tests pass** — Move to next item
|
|
42
|
+
|
|
43
|
+
## Step 4: Handle CAUTION Items
|
|
44
|
+
|
|
45
|
+
Before deleting CAUTION items:
|
|
46
|
+
- Search for dynamic imports: `import()`, `require()`, `__import__`
|
|
47
|
+
- Search for string references: route names, component names in configs
|
|
48
|
+
- Check if exported from a public package API
|
|
49
|
+
- Verify no external consumers (check dependents if published)
|
|
50
|
+
|
|
51
|
+
## Step 5: Consolidate Duplicates
|
|
52
|
+
|
|
53
|
+
After removing dead code, look for:
|
|
54
|
+
- Near-duplicate functions (>80% similar) — merge into one
|
|
55
|
+
- Redundant type definitions — consolidate
|
|
56
|
+
- Wrapper functions that add no value — inline them
|
|
57
|
+
- Re-exports that serve no purpose — remove indirection
|
|
58
|
+
|
|
59
|
+
## Step 6: Summary
|
|
60
|
+
|
|
61
|
+
Report results:
|
|
62
|
+
|
|
63
|
+
```
|
|
64
|
+
Dead Code Cleanup
|
|
65
|
+
──────────────────────────────
|
|
66
|
+
Deleted: 12 unused functions
|
|
67
|
+
3 unused files
|
|
68
|
+
5 unused dependencies
|
|
69
|
+
Skipped: 2 items (tests failed)
|
|
70
|
+
Saved: ~450 lines removed
|
|
71
|
+
──────────────────────────────
|
|
72
|
+
All tests passing ✅
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
## Rules
|
|
76
|
+
|
|
77
|
+
- **Never delete without running tests first**
|
|
78
|
+
- **One deletion at a time** — Atomic changes make rollback easy
|
|
79
|
+
- **Skip if uncertain** — Better to keep dead code than break production
|
|
80
|
+
- **Don't refactor while cleaning** — Separate concerns (clean first, refactor later)
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Load the most recent session file from ~/.claude/session-data/ and resume work with full context from where the last session ended.
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Resume Session Command
|
|
6
|
+
|
|
7
|
+
Load the last saved session state and orient fully before doing any work.
|
|
8
|
+
This command is the counterpart to `/save-session`.
|
|
9
|
+
|
|
10
|
+
## When to Use
|
|
11
|
+
|
|
12
|
+
- Starting a new session to continue work from a previous day
|
|
13
|
+
- After starting a fresh session due to context limits
|
|
14
|
+
- When handing off a session file from another source (just provide the file path)
|
|
15
|
+
- Any time you have a session file and want Claude to fully absorb it before proceeding
|
|
16
|
+
|
|
17
|
+
## Usage
|
|
18
|
+
|
|
19
|
+
```
|
|
20
|
+
/resume-session # loads most recent file in ~/.claude/session-data/
|
|
21
|
+
/resume-session 2024-01-15 # loads most recent session for that date
|
|
22
|
+
/resume-session ~/.claude/session-data/2024-01-15-abc123de-session.tmp # loads a current short-id session file
|
|
23
|
+
/resume-session ~/.claude/sessions/2024-01-15-session.tmp # loads a specific legacy-format file
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## Process
|
|
27
|
+
|
|
28
|
+
### Step 1: Find the session file
|
|
29
|
+
|
|
30
|
+
If no argument provided:
|
|
31
|
+
|
|
32
|
+
1. Check `~/.claude/session-data/`
|
|
33
|
+
2. Pick the most recently modified `*-session.tmp` file
|
|
34
|
+
3. If the folder does not exist or has no matching files, tell the user:
|
|
35
|
+
```
|
|
36
|
+
No session files found in ~/.claude/session-data/
|
|
37
|
+
Run /save-session at the end of a session to create one.
|
|
38
|
+
```
|
|
39
|
+
Then stop.
|
|
40
|
+
|
|
41
|
+
If an argument is provided:
|
|
42
|
+
|
|
43
|
+
- If it looks like a date (`YYYY-MM-DD`), search `~/.claude/session-data/` first, then the legacy
|
|
44
|
+
`~/.claude/sessions/`, for files matching `YYYY-MM-DD-session.tmp` (legacy format) or
|
|
45
|
+
`YYYY-MM-DD-<shortid>-session.tmp` (current format)
|
|
46
|
+
and load the most recently modified variant for that date
|
|
47
|
+
- If it looks like a file path, read that file directly
|
|
48
|
+
- If not found, report clearly and stop
|
|
49
|
+
|
|
50
|
+
### Step 2: Read the entire session file
|
|
51
|
+
|
|
52
|
+
Read the complete file. Do not summarize yet.
|
|
53
|
+
|
|
54
|
+
### Step 3: Confirm understanding
|
|
55
|
+
|
|
56
|
+
Respond with a structured briefing in this exact format:
|
|
57
|
+
|
|
58
|
+
```
|
|
59
|
+
SESSION LOADED: [actual resolved path to the file]
|
|
60
|
+
════════════════════════════════════════════════
|
|
61
|
+
|
|
62
|
+
PROJECT: [project name / topic from file]
|
|
63
|
+
|
|
64
|
+
WHAT WE'RE BUILDING:
|
|
65
|
+
[2-3 sentence summary in your own words]
|
|
66
|
+
|
|
67
|
+
CURRENT STATE:
|
|
68
|
+
✅ Working: [count] items confirmed
|
|
69
|
+
🔄 In Progress: [list files that are in progress]
|
|
70
|
+
🗒️ Not Started: [list planned but untouched]
|
|
71
|
+
|
|
72
|
+
WHAT NOT TO RETRY:
|
|
73
|
+
[list every failed approach with its reason — this is critical]
|
|
74
|
+
|
|
75
|
+
OPEN QUESTIONS / BLOCKERS:
|
|
76
|
+
[list any blockers or unanswered questions]
|
|
77
|
+
|
|
78
|
+
NEXT STEP:
|
|
79
|
+
[exact next step if defined in the file]
|
|
80
|
+
[if not defined: "No next step defined — recommend reviewing 'What Has NOT Been Tried Yet' together before starting"]
|
|
81
|
+
|
|
82
|
+
════════════════════════════════════════════════
|
|
83
|
+
Ready to continue. What would you like to do?
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
### Step 4: Wait for the user
|
|
87
|
+
|
|
88
|
+
Do NOT start working automatically. Do NOT touch any files. Wait for the user to say what to do next.
|
|
89
|
+
|
|
90
|
+
If the next step is clearly defined in the session file and the user says "continue" or "yes" or similar — proceed with that exact next step.
|
|
91
|
+
|
|
92
|
+
If no next step is defined — ask the user where to start, and optionally suggest an approach from the "What Has NOT Been Tried Yet" section.
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
|
|
96
|
+
## Edge Cases
|
|
97
|
+
|
|
98
|
+
**Multiple sessions for the same date** (`2024-01-15-session.tmp`, `2024-01-15-abc123de-session.tmp`):
|
|
99
|
+
Load the most recently modified matching file for that date, regardless of whether it uses the legacy no-id format or the current short-id format.
|
|
100
|
+
|
|
101
|
+
**Session file references files that no longer exist:**
|
|
102
|
+
Note this during the briefing — "⚠️ `path/to/file.ts` referenced in session but not found on disk."
|
|
103
|
+
|
|
104
|
+
**Session file is from more than 7 days ago:**
|
|
105
|
+
Note the gap — "⚠️ This session is from N days ago (threshold: 7 days). Things may have changed." — then proceed normally.
|
|
106
|
+
|
|
107
|
+
**User provides a file path directly (e.g., forwarded from a teammate):**
|
|
108
|
+
Read it and follow the same briefing process — the format is the same regardless of source.
|
|
109
|
+
|
|
110
|
+
**Session file is empty or malformed:**
|
|
111
|
+
Report: "Session file found but appears empty or unreadable. You may need to create a new one with /save-session."
|
|
112
|
+
|
|
113
|
+
---
|
|
114
|
+
|
|
115
|
+
## Example Output
|
|
116
|
+
|
|
117
|
+
```
|
|
118
|
+
SESSION LOADED: /Users/you/.claude/session-data/2024-01-15-abc123de-session.tmp
|
|
119
|
+
════════════════════════════════════════════════
|
|
120
|
+
|
|
121
|
+
PROJECT: my-app — JWT Authentication
|
|
122
|
+
|
|
123
|
+
WHAT WE'RE BUILDING:
|
|
124
|
+
User authentication with JWT tokens stored in httpOnly cookies.
|
|
125
|
+
Register and login endpoints are partially done. Route protection
|
|
126
|
+
via middleware hasn't been started yet.
|
|
127
|
+
|
|
128
|
+
CURRENT STATE:
|
|
129
|
+
✅ Working: 3 items (register endpoint, JWT generation, password hashing)
|
|
130
|
+
🔄 In Progress: app/api/auth/login/route.ts (token works, cookie not set yet)
|
|
131
|
+
🗒️ Not Started: middleware.ts, app/login/page.tsx
|
|
132
|
+
|
|
133
|
+
WHAT NOT TO RETRY:
|
|
134
|
+
❌ Next-Auth — conflicts with custom Prisma adapter, threw adapter error on every request
|
|
135
|
+
❌ localStorage for JWT — causes SSR hydration mismatch, incompatible with Next.js
|
|
136
|
+
|
|
137
|
+
OPEN QUESTIONS / BLOCKERS:
|
|
138
|
+
- Does cookies().set() work inside a Route Handler or only Server Actions?
|
|
139
|
+
|
|
140
|
+
NEXT STEP:
|
|
141
|
+
In app/api/auth/login/route.ts — set the JWT as an httpOnly cookie using
|
|
142
|
+
cookies().set('token', jwt, { httpOnly: true, secure: true, sameSite: 'strict' })
|
|
143
|
+
then test with Postman for a Set-Cookie header in the response.
|
|
144
|
+
|
|
145
|
+
════════════════════════════════════════════════
|
|
146
|
+
Ready to continue. What would you like to do?
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
---
|
|
150
|
+
|
|
151
|
+
## Notes
|
|
152
|
+
|
|
153
|
+
- Never modify the session file when loading it — it's a read-only historical record
|
|
154
|
+
- The briefing format is fixed — do not skip sections even if they are empty
|
|
155
|
+
- "What Not To Retry" must always be shown, even if it just says "None" — it's too important to miss
|
|
156
|
+
- After resuming, the user may want to run `/save-session` again at the end of the new session to create a new dated file
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "Scan skills to extract cross-cutting principles and distill them into rules"
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# /rules-distill — Distill Principles from Skills into Rules
|
|
6
|
+
|
|
7
|
+
Scan installed skills, extract cross-cutting principles, and distill them into rules.
|
|
8
|
+
|
|
9
|
+
## Process
|
|
10
|
+
|
|
11
|
+
Follow the full workflow defined in the `rules-distill` skill.
|