Standards Extraction Skill
Extract coding standards, formatting rules, and contribution guidelines from project configuration files. Returns structured data about project conventions.
Variables
| Variable | Default | Description | |----------|---------|-------------| | INCLUDE_LINTER_RULES | true | Parse ESLint, Prettier, Ruff configs | | INCLUDE_EDITOR_CONFIG | true | Parse .editorconfig | | INCLUDE_GIT_HOOKS | true | Check for pre-commit, husky configs | | OUTPUT_FORMAT | json | Output format: json, markdown, or toon |
Instructions
MANDATORY - Follow the Workflow steps below in order. Do not skip steps.
- Check for CONTRIBUTING.md or similar guide files
- Parse formatting configuration files
- Parse linting configuration files
- Check for git hooks and CI checks
- Compile standards summary
Red Flags - STOP and Reconsider
If you're about to:
- Assume formatting rules without checking config files
- Skip CONTRIBUTING.md because "it's probably standard"
- Infer conventions without evidence from configs
- Report rules that contradict actual config files
STOP -> Read the config files -> Extract actual rules -> Then report
Workflow
1. Discover Standards Files
Check for these files (in order):
| File | Type | Purpose |
|------|------|---------|
| CONTRIBUTING.md | Markdown | Contribution guidelines |
| CONTRIBUTING | Text | Contribution guidelines |
| docs/CONTRIBUTING.md | Markdown | Contribution guidelines |
| .github/CONTRIBUTING.md | Markdown | Contribution guidelines |
| .editorconfig | INI | Editor formatting |
| .prettierrc* | JSON/YAML | Prettier config |
| prettier.config.* | JS/TS | Prettier config |
| .eslintrc* | JSON/YAML | ESLint config |
| eslint.config.* | JS/TS | ESLint flat config |
| pyproject.toml | TOML | Python tools (ruff, black, isort) |
| .ruff.toml | TOML | Ruff config |
| .pre-commit-config.yaml | YAML | Pre-commit hooks |
| .husky/ | Directory | Git hooks |
| .github/PULL_REQUEST_TEMPLATE.md | Markdown | PR template |
| .github/ISSUE_TEMPLATE/ | Directory | Issue templates |
2. Extract Contribution Guidelines
From CONTRIBUTING.md, extract:
- Commit message format: Conventional commits, gitmoji, etc.
- Branch naming: feature/, fix/, etc.
- PR process: Required reviewers, checks, etc.
- Code style notes: Any explicit guidance
- Testing requirements: What tests are required
3. Extract Formatting Rules
From .editorconfig:
[*]
indent_style = space
indent_size = 2
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
From Prettier config:
{
"semi": true,
"singleQuote": true,
"tabWidth": 2,
"printWidth": 100
}
4. Extract Linting Rules
From ESLint:
- Key enabled/disabled rules
- Extended configs (airbnb, standard, etc.)
- Custom rules
From Ruff/Black (pyproject.toml):
[tool.ruff]
line-length = 88
select = ["E", "F", "I"]
[tool.black]
line-length = 88
5. Extract Git Hooks
From .pre-commit-config.yaml:
- Hooks that run on commit
- Required checks
From .husky/:
- Pre-commit scripts
- Pre-push scripts
6. Compile Output
{
"project_root": "/path/to/project",
"extracted_at": "2025-12-21T12:00:00Z",
"contribution_guidelines": {
"source": "CONTRIBUTING.md",
"commit_format": "conventional",
"branch_naming": "type/description",
"pr_requirements": ["tests", "review"],
"notes": []
},
"formatting": {
"indent_style": "space",
"indent_size": 2,
"line_length": 100,
"quotes": "single",
"semicolons": true,
"trailing_commas": "es5",
"sources": [".editorconfig", ".prettierrc"]
},
"linting": {
"javascript": {
"tool": "eslint",
"extends": ["next/core-web-vitals"],
"key_rules": {}
},
"python": {
"tool": "ruff",
"line_length": 88,
"select": ["E", "F", "I"]
}
},
"git_hooks": {
"pre_commit": ["lint-staged", "prettier"],
"pre_push": ["test"]
},
"ci_checks": {
"source": ".github/workflows/",
"checks": ["lint", "test", "build"]
}
}
Cookbook
Parsing Configurations
- IF: Need to parse any config file
- THEN: Read and execute
./cookbook/config-parsing.md
Quick Reference
Commit Format Detection
| Pattern in CONTRIBUTING.md | Format | |---------------------------|--------| | "Conventional Commits" | conventional | | "feat:", "fix:", "chore:" | conventional | | ":emoji:" or gitmoji | gitmoji | | "JIRA-123" pattern | jira | | No pattern found | freeform |
Common Formatter Configs
| File | Tool |
|------|------|
| .prettierrc* | Prettier |
| biome.json | Biome |
| .editorconfig | EditorConfig |
| dprint.json | dprint |
Common Linter Configs
| File | Tool |
|------|------|
| .eslintrc*, eslint.config.* | ESLint |
| pyproject.toml [tool.ruff] | Ruff |
| pyproject.toml [tool.pylint] | Pylint |
| .golangci.yml | golangci-lint |
| clippy.toml | Clippy (Rust) |
Output Schema
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"project_root": {"type": "string"},
"extracted_at": {"type": "string", "format": "date-time"},
"contribution_guidelines": {
"type": "object",
"properties": {
"source": {"type": "string"},
"commit_format": {"type": "string"},
"branch_naming": {"type": "string"},
"pr_requirements": {"type": "array", "items": {"type": "string"}},
"notes": {"type": "array", "items": {"type": "string"}}
}
},
"formatting": {
"type": "object",
"properties": {
"indent_style": {"type": "string"},
"indent_size": {"type": "integer"},
"line_length": {"type": "integer"},
"quotes": {"type": "string"},
"semicolons": {"type": "boolean"},
"sources": {"type": "array", "items": {"type": "string"}}
}
},
"linting": {"type": "object"},
"git_hooks": {"type": "object"},
"ci_checks": {"type": "object"}
}
}
Integration
This skill is used by:
/ai-dev-kit:quickstart-codebase- Onboarding workflowlane-executor- To follow project conventions- Contribution validation - To check PR compliance