Extract coding standards and conventions from CONTRIBUTING.md, .editorconfig, linter configs. Use for onboarding and ensuring consistent contributions.
Extract coding standards, formatting rules, and contribution guidelines from project configuration files. Returns structured data about project conventions.
| 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 |
MANDATORY - Follow the Workflow steps below in order. Do not skip steps.
If you're about to:
STOP -> Read the config files -> Extract actual rules -> Then report
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 |
From CONTRIBUTING.md, extract:
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
}
From ESLint:
From Ruff/Black (pyproject.toml):
[tool.ruff]
line-length = 88
select = ["E", "F", "I"]
[tool.black]
line-length = 88
From .pre-commit-config.yaml:
From .husky/:
{
"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/config-parsing.md| Pattern in CONTRIBUTING.md | Format |
|---|---|
| "Conventional Commits" | conventional |
| "feat:", "fix:", "chore:" | conventional |
| ":emoji:" or gitmoji | gitmoji |
| "JIRA-123" pattern | jira |
| No pattern found | freeform |
| File | Tool |
|---|---|
.prettierrc* |
Prettier |
biome.json |
Biome |
.editorconfig |
EditorConfig |
dprint.json |
dprint |
| File | Tool |
|---|---|
.eslintrc*, eslint.config.* |
ESLint |
pyproject.toml [tool.ruff] |
Ruff |
pyproject.toml [tool.pylint] |
Pylint |
.golangci.yml |
golangci-lint |
clippy.toml |
Clippy (Rust) |
{
"$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"}
}
}
This skill is used by:
/ai-dev-kit:quickstart-codebase - Onboarding workflowlane-executor - To follow project conventions