Contributing¶
Thank you for your interest in contributing to CMS Cultivator! This document provides guidelines for contributing to the project.
Getting Started¶
Prerequisites¶
- Git
- Python 3.x (for Zensical documentation)
- Claude Code CLI or OpenAI Codex (for testing skills)
- Basic knowledge of Markdown
Setting Up Development Environment¶
-
Fork the repository on GitHub
-
Clone your fork:
-
Install Zensical (for documentation):
-
Test the plugin locally:
Claude Code:
# Link to Claude Code plugins directory, from WITHIN the cms-cultivator directory
mkdir -p ~/.config/claude/plugins
ln -s "$(pwd)" ~/.config/claude/plugins/
claude plugins enable cms-cultivator
OpenAI Codex:
# Link to Codex plugins directory, from WITHIN the cms-cultivator directory
mkdir -p ~/.codex/plugins
ln -s "$(pwd)" ~/.codex/plugins/cms-cultivator
# Then add ~/.agents/plugins/marketplace.json pointing to ~/.codex/plugins/cms-cultivator
# and restart Codex
Making Changes¶
Adding a New Skill¶
1. Create the skill directory and file¶
2. Add frontmatter and content¶
---
name: my-new-skill
description: Automatically [action] when user [trigger phrase]. Invoke when user mentions "[term1]", "[term2]", or asks "[example question]".
---
Then write the skill content — workflow steps, examples, Drupal/WordPress-specific guidance.
3. Validate frontmatter¶
4. Test the skill locally¶
Claude Code:
# Trigger via natural language
"[describe scenario that should activate the skill]"
# Or invoke explicitly
/my-new-skill
OpenAI Codex:
5. Add to documentation¶
- Update
docs/commands/overview.mdwith the new skill entry - Update
docs/agents-and-skills.mdif the skill spawns agents
Updating Existing Skills¶
1. Modify the skill file in skills/skill-name/SKILL.md¶
2. Test thoroughly¶
- Trigger via natural language
- Try with both Drupal and WordPress projects
- Verify Kanopi tool integration if applicable
3. Update documentation if behavior changed¶
Improving Documentation¶
1. Edit files in /docs/¶
2. Preview locally¶
3. Build to verify¶
Coding Standards¶
Skill Files (skills/<name>/SKILL.md)¶
- Use clear, descriptive headings
- Include code examples with proper syntax highlighting
- Provide both Drupal and WordPress examples where applicable
- Document trigger phrases and focus options
- Include expected output examples
Documentation¶
- Write in clear, concise language
- Use proper Markdown formatting
- Include code examples with syntax highlighting
- Add admonitions for warnings/tips:
Frontmatter¶
Skills (skills/*/SKILL.md):
- name: Skill identifier in kebab-case (must match directory name)
- description: When to invoke, trigger phrases, and use cases
Agents (agents/*/AGENT.md):
- name: Agent name in kebab-case (must match directory name)
- description: When and how to invoke this agent
- tools: Available tools list
Validating Frontmatter¶
Before committing changes to agents or skills, validate that all frontmatter is properly formatted.
Run the validation script¶
This script checks:
- Frontmatter presence - All files have valid YAML frontmatter
- Required fields - All mandatory fields exist for each file type
- YAML syntax - Frontmatter can be parsed without errors
- Non-empty values - All required fields have content
- Name consistency - Agent and skill names match directory names
Common frontmatter issues¶
Unquoted square brackets - Always quote argument-hint values containing brackets:
Missing required fields - Each file type has required fields:
Agents (agents/*/AGENT.md):
- name - Agent name (must match directory)
- description - When/how to invoke this agent
- tools - Available tools
Skills (skills/*/SKILL.md):
- name - Skill name (must match directory)
- description - Trigger terms and use cases
Add validation to CI/CD¶
Consider adding the validation script to your pre-commit hook or CI/CD pipeline:
Pull Request Process¶
1. Create a branch from main¶
2. Make your changes¶
- Follow coding standards
- Add/update documentation
- Test thoroughly
3. Commit your changes¶
Use Conventional Commits:
feat:- New featurefix:- Bug fixdocs:- Documentation changesrefactor:- Code refactoringtest:- Adding testschore:- Maintenance
4. Push to your fork¶
5. Create Pull Request on GitHub¶
- Provide clear description
- Reference any issues
- Add screenshots if relevant
6. Address review feedback¶
- Make requested changes
- Push updates to same branch
Testing Guidelines¶
Manual Testing¶
1. Install plugin locally¶
2. Test command variations¶
- Without arguments
- With different focus options
- In Drupal project
- In WordPress project
3. Verify Kanopi integration¶
- Test with
ddev composercommands - Verify
ddevcustom commands work
Documentation Testing¶
Code of Conduct¶
Our Pledge¶
We are committed to providing a welcoming and inclusive environment for all contributors.
Expected Behavior¶
- Be respectful and considerate
- Provide constructive feedback
- Focus on what is best for the community
- Show empathy towards others
Unacceptable Behavior¶
- Harassment or discriminatory language
- Personal attacks
- Publishing others' private information
- Other unethical or unprofessional conduct
Getting Help¶
- GitHub Issues: Report bugs or request features
- GitHub Discussions: Ask questions or share ideas
- Documentation: Read the full docs
Recognition¶
Contributors will be recognized in:
- CHANGELOG.md for significant contributions
- GitHub contributors page
- Project documentation (where applicable)
License¶
By contributing to CMS Cultivator, you agree that your contributions will be licensed under the GPL-2.0-or-later license.
Thank you for contributing to CMS Cultivator! 🎉