Markdown
v2.3.0Markdown documentation skills and linting with markdownlint.
Installation
Install han binary (required for hooks to work):
curl -fsSL https://han.guru/install.sh | bashThen install this plugin:
han plugin install jutsu-markdownOverview
Markdown documentation skills and linting with markdownlint.
What This Jutsu Provides
Validation Hooks
- Markdownlint Validation: Runs markdownlint on all
.mdfiles to enforce consistent formatting - Validates files on session stop and when agents complete work
- Only runs when markdown files have changed (with
--cacheflag) - Automatically fixes fixable issues with
--fix
Skills
This jutsu provides the following skills:
Markdown Fundamentals
- markdown-syntax-fundamentals: Core markdown syntax for headings, text formatting, lists, links, images, code blocks, and blockquotes
- markdown-tables: Table syntax, alignment, escaping, and best practices for complex table layouts
- markdown-documentation: Writing effective technical documentation, READMEs, changelogs, and API docs
Markdownlint
- markdownlint-configuration: Configure markdownlint rules and options including rule management, configuration files, and style inheritance
- markdownlint-custom-rules: Create custom linting rules including rule structure, parser integration, and automatic fixing
- markdownlint-integration: Integrate markdownlint into development workflows including CLI usage, programmatic API, and CI/CD pipelines
Installation
Install via the Han marketplace:
han plugin install jutsu-markdown
Or install manually:
claude plugin marketplace add thebushidocollective/han
claude plugin install jutsu-markdown@han
Usage
Once installed, this jutsu automatically validates your markdown files:
- When you finish a conversation with Claude Code
- When Claude Code agents complete their work
- Before commits (when combined with git hooks)
Configuration
Configure markdownlint by adding a configuration file to directories you want to lint:
.markdownlint.jsonor.markdownlint.jsonc(JSON format).markdownlint.yamlor.markdownlint.yml(YAML format)
Example .markdownlint.json:
{
"default": true,
"MD013": false,
"MD041": false
}
Common Markdownlint Rules
| Rule | Description |
|---|---|
| MD001 | Heading levels should only increment by one level at a time |
| MD013 | Line length (often disabled for prose) |
| MD031 | Fenced code blocks should be surrounded by blank lines |
| MD041 | First line should be a top-level heading |
| MD056 | Table column count should be consistent |
Overriding Hooks
Create a han-config.yml in directories where you want to customize behavior:
jutsu-markdown:
lint:
enabled: false # Disable markdownlint for this directory
Or override the command:
jutsu-markdown:
lint:
command: "npx -y markdownlint-cli --fix . --disable MD013" # Ignore line length
Contributing
See CONTRIBUTING.md for guidelines.
License
MIT License - See LICENSE for details.
Skills
markdown-documentation
Use when writing technical documentation, READMEs, or project documentation in markdown. Covers structure, conventions, and best practices.
markdown-syntax-fundamentals
Use when writing or editing markdown files. Covers headings, text formatting, lists, links, images, code blocks, and blockquotes.
markdown-tables
Use when creating or formatting tables in markdown. Covers table syntax, alignment, escaping, and best practices.
markdownlint-configuration
Configure markdownlint rules and options including rule management, configuration files, inline comments, and style inheritance.
markdownlint-custom-rules
Create custom linting rules for markdownlint including rule structure, parser integration, error reporting, and automatic fixing.
markdownlint-integration
Integrate markdownlint into development workflows including CLI usage, programmatic API, CI/CD pipelines, and editor integration.
Hooks
Token Usage Notice
Hooks run automatically during Claude Code sessions and their output is sent to the model for processing. This may increase token usage and associated costs. Consider disabling hooks you don't need via han-config.yml.
Stop
Runs when the main Claude Code agent has finished responding. Can verify task completion, check quality gates, or ensure documentation requirements are met before the session ends.
SubagentStop
Runs when a Claude Code subagent (Task tool call) has finished responding. Can validate subagent outputs, enforce quality standards, or trigger additional workflows after delegated tasks complete.