Thank you for your interest in contributing! This project provides deterministic skills for Claude to generate flawless ERPNext/Frappe code.
- Bug reports: Use the bug report template
- Feature requests: Use the feature request template
- Questions: Open a discussion or issue
- Fork the repository
- Create a feature branch (
git checkout -b feature/your-feature) - Make your changes
- Test your changes (see Testing below)
- Commit with clear messages (
git commit -m "Add: description") - Push to your fork (
git push origin feature/your-feature) - Open a Pull Request
Every skill must follow this structure:
skill-name/
├── SKILL.md # Main skill file (<500 lines)
└── references/
├── methods.md # Detailed method documentation
├── examples.md # Working code examples
└── anti-patterns.md # Common mistakes to avoid
- Must be in skill folder root (not in subdirectory)
- Maximum 500 lines
- Must include YAML frontmatter with name, description, version
- English language only
- Only verified facts from official Frappe documentation
DO:
- Verify all code against official docs.frappe.io
- Include version-specific information (v14/v15/v16)
- Provide working examples tested in actual ERPNext
- Document anti-patterns with explanations
DON'T:
- Make assumptions about API behavior
- Copy from outdated community posts
- Use imports in Server Script examples (sandbox restriction)
Server Scripts run in a RestrictedPython sandbox. Never use imports:
# ❌ WRONG - Will fail
from frappe.utils import nowdate
# ✅ CORRECT - Use namespace
date = frappe.utils.nowdate()Before submitting:
-
Validate SKILL.md format:
python tools/quick_validate.py skills/source/your-skill/
-
Check line count:
wc -l skills/source/your-skill/SKILL.md # Must be <500 -
Verify all code examples work in ERPNext
Type: Short description
Types:
- Add: New feature or skill
- Fix: Bug fix
- Update: Improvement to existing content
- Docs: Documentation only
- Cleanup: Code cleanup, no functional change
Open an issue or check existing documentation in the docs/ folder.