Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions .github/workflows/quality.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,13 @@
name: Skill Quality
on: [push, pull_request]
jobs:
local-quality:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.x'
- run: python3 tools/quick_validate.py skills/source --all
quality:
uses: OpenAEC-Foundation/Skill-Package-Workflow-Template/.github/workflows/skill-quality.yml@main
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ Thumbs.db
.env.local
PROMPTS.md
.claude/
.hermes/
*.code-workspace

# Node (if any JS tooling)
Expand Down
19 changes: 14 additions & 5 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -72,17 +72,26 @@ date = frappe.utils.nowdate()

Before submitting:

1. Validate SKILL.md format:
1. Validate one skill:
```bash
python tools/quick_validate.py skills/source/your-skill/
python3 tools/quick_validate.py skills/source/category/your-skill/
```

2. Check line count:
2. Validate all skills:
```bash
wc -l skills/source/your-skill/SKILL.md # Must be <500
python3 tools/quick_validate.py skills/source --all
```

3. Verify all code examples work in ERPNext
3. Keep every `SKILL.md` at maximum 500 lines, measured with:
```bash
python3 - <<'PY'
from pathlib import Path
p = Path('skills/source/category/your-skill/SKILL.md')
print(len(p.read_text(encoding='utf-8').splitlines()))
PY
```

4. Verify all code examples work in ERPNext

## Commit Message Format

Expand Down
8 changes: 5 additions & 3 deletions INSTALL.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
-e # Installation Guide
# Installation Guide

> **This file has been replaced by [USAGE.md](USAGE.md)**
> **This file has been replaced by [USAGE.md](USAGE.md).**

Please see [USAGE.md](USAGE.md) for platform-specific installation guides:
Please see:

- [USAGE.md](USAGE.md) for the main guide
- [Agent Harnesses: OpenCode, Codex, skills.sh](docs/usage/agent-harnesses.md)
- [Claude Code Installation](docs/usage/claude-code.md)
- [Claude.ai Web Installation](docs/usage/claude-web.md)
- [Claude Desktop Installation](docs/usage/claude-desktop.md)
7 changes: 4 additions & 3 deletions MIGRATION-AGENT-SKILLS-STANDARD.md
Original file line number Diff line number Diff line change
Expand Up @@ -72,15 +72,16 @@ Voeg aan INSTALL.md of USAGE.md de volgende sectie toe:
```markdown
### Globale installatie (Claude Code CLI)

Kopieer alle skills naar je globale skills directory zodat ze in elk project beschikbaar zijn:
Kopieer alle skill folders naar je globale skills directory zodat ze in elk project beschikbaar zijn:

cp -r skills/source/* ~/.claude/skills/
mkdir -p ~/.claude/skills
cp -R skills/source/*/* ~/.claude/skills/

De skills gebruiken progressive disclosure: bij startup laadt Claude alleen
de name en description (~100 tokens per skill). De volledige instructies
worden pas geladen wanneer een skill relevant is voor je vraag.

28 skills × ~100 tokens = ~2.800 tokens startup-overhead. Dit is verwaarloosbaar
61 skills × ~100 tokens = ~6.100 tokens startup-overhead. Dit is verwaarloosbaar
op een context window van 200k tokens.
```

Expand Down
26 changes: 18 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -56,26 +56,36 @@ This package encodes **61 hard-won lessons** like this into deterministic skills

## 🚀 Installation

### Claude Code (Recommended)
### OpenCode, Codex, and skills.sh

See [`docs/usage/agent-harnesses.md`](docs/usage/agent-harnesses.md) for verified OpenCode, Codex, Claude Code, and `skills.sh` install paths.

```bash
# Safe discovery command; lists all 61 skills without installing
npx skills@1.5.13 add Impertio-Studio/Frappe_Claude_Skill_Package --list
```

### Claude Code

```bash
# Clone the repository
git clone https://github.com/OpenAEC-Foundation/Frappe_Claude_Skill_Package.git
git clone https://github.com/Impertio-Studio/Frappe_Claude_Skill_Package.git

# Copy all 61 skills to your Claude Code skills directory
cp -r Frappe_Claude_Skill_Package/skills/source/* ~/.claude/skills/
# Copy all 61 skill folders to your Claude Code skills directory
mkdir -p ~/.claude/skills
cp -R Frappe_Claude_Skill_Package/skills/source/*/* ~/.claude/skills/
```

### Claude.ai Web/Desktop

1. Download skill folders from [`skills/source/`](skills/source/)
2. ZIP each folder individually
2. ZIP each skill folder individually, with `SKILL.md` at the folder root
3. Upload via **Settings → Capabilities → Skills**

### Claude.ai Projects

1. Create a new project
2. Upload `SKILL.md` files to the **Knowledge** section
2. Upload relevant `SKILL.md` files to the **Knowledge** section

---

Expand Down Expand Up @@ -111,7 +121,7 @@ This package also serves as a **template** for building Claude skill packages in

See [`WAY_OF_WORK.md`](WAY_OF_WORK.md) for the methodology we used to build these skills.

**Found an issue?** [Open an issue](https://github.com/OpenAEC-Foundation/Frappe_Claude_Skill_Package/issues/new)
**Found an issue?** [Open an issue](https://github.com/Impertio-Studio/Frappe_Claude_Skill_Package/issues/new)
**Want to contribute?** PRs welcome!

---
Expand Down Expand Up @@ -145,5 +155,5 @@ MIT — See [LICENSE.md](LICENSE.md) for details.
</p>

<p align="center">
<a href="https://github.com/OpenAEC-Foundation/Frappe_Claude_Skill_Package/stargazers">⭐ Star this repo if it helps you!</a>
<a href="https://github.com/Impertio-Studio/Frappe_Claude_Skill_Package/stargazers">⭐ Star this repo if it helps you!</a>
</p>
6 changes: 6 additions & 0 deletions SOURCES.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
| Source | URL | Coverage | Last Verified |
|--------|-----|----------|---------------|
| Frappe Framework Docs | https://docs.frappe.io/framework | Core framework API, hooks, controllers | 2026-01-17 |
| Frappe Framework Introduction | https://docs.frappe.io/framework/user/en/introduction | Framework overview, metadata-as-data model, Desk, permissions, REST API | 2026-06-24 |
| Database API | https://docs.frappe.io/framework/user/en/api/database | frappe.db methods, query builder | 2026-01-17 |
| Document API | https://docs.frappe.io/framework/user/en/api/document | frappe.get_doc, document lifecycle | 2026-01-17 |
| Form API | https://docs.frappe.io/framework/user/en/api/form | Client-side form manipulation | 2026-01-17 |
Expand Down Expand Up @@ -55,6 +56,11 @@
| Source | URL | Purpose | Last Verified |
|--------|-----|---------|---------------|
| Frappe Source | https://github.com/frappe/frappe | Source code verification | 2026-01-17 |
| Frappe Docker | https://github.com/frappe/frappe_docker | Official Docker/container setup repository for Frappe apps | 2026-06-24 |
| Frappe Docker Docs | https://frappe.github.io/frappe_docker/ | Published Docker setup documentation | 2026-06-24 |
| Frappe Docker Getting Started | https://frappe.github.io/frappe_docker/getting-started.html | Docker architecture, repo layout, services, images, overrides | 2026-06-24 |
| Frappe Docker Single Compose Setup | https://frappe.github.io/frappe_docker/01-getting-started/04-single-compose-setup.html | `pwd.yml` demo setup, services, volumes, adaptation notes | 2026-06-24 |
| Frappe Docker Development | https://frappe.github.io/frappe_docker/05-development/01-development.html | Devcontainer and development bench workflow | 2026-06-24 |
| ERPNext Releases | https://github.com/frappe/erpnext/releases | Version change tracking | 2026-01-17 |
| Frappe Permissions | https://github.com/frappe/frappe/blob/develop/frappe/permissions.py | Permission internals | 2026-01-17 |
| Document Model | https://github.com/frappe/frappe/blob/develop/frappe/model/document.py | Document lifecycle | 2026-01-17 |
Expand Down
109 changes: 39 additions & 70 deletions USAGE.md
Original file line number Diff line number Diff line change
@@ -1,78 +1,47 @@
# Using the ERPNext Skills Package
# Using the Frappe Skills Package

This guide shows you how to install and use the ERPNext Skills Package across different Claude platforms.
This guide shows how to install and use the 61 Frappe/ERPNext Agent Skills across Claude platforms and other agent harnesses.

## Quick Start

| Platform | Installation Time | Difficulty |
|----------|:-----------------:|:----------:|
| Claude Code (CLI) | 2 minutes | Easy |
| Claude.ai Web | 5 minutes | Easy |
| Claude Desktop | 5 minutes | Easy |
| Claude Code | 2 minutes | Easy |
| OpenCode / Codex | 2 minutes | Easy |
| Claude.ai Web/Desktop | 5 minutes | Easy |
| Claude Mobile | ❌ Not supported | - |

## Prerequisites

- **Claude Code**: Active Claude Code installation
- **Claude Code**: active Claude Code installation
- **OpenCode/Codex**: agent with Agent Skills support
- **Claude.ai / Desktop**: Pro, Max, Team, or Enterprise plan with Code Execution enabled

## Platform-Specific Guides

- [Claude Code Installation](docs/usage/claude-code.md) - Recommended for developers
- [Claude.ai Web Installation](docs/usage/claude-web.md) - Browser-based usage
- [Claude Desktop Installation](docs/usage/claude-desktop.md) - Desktop app usage
- [Agent Harnesses: OpenCode, Codex, skills.sh](docs/usage/agent-harnesses.md)
- [Claude Code Installation](docs/usage/claude-code.md)
- [Claude.ai Web Installation](docs/usage/claude-web.md)
- [Claude Desktop Installation](docs/usage/claude-desktop.md)

## What's Included

This package contains 28 skills organized by category:

### Syntax Skills (8)
Reference guides for ERPNext/Frappe code patterns:
- `syntax-client-scripts` - Client Script syntax and events
- `syntax-server-scripts` - Server Script sandbox rules
- `syntax-controllers` - Document controller methods
- `syntax-hooks` - hooks.py configuration
- `syntax-whitelisted` - @frappe.whitelist() patterns
- `syntax-jinja` - Jinja templating in print formats
- `syntax-scheduler` - Scheduled job configuration
- `syntax-custom-app` - Custom app structure

### Core Skills (3)
Fundamental Frappe framework knowledge:
- `core-database` - Database operations and ORM
- `core-permissions` - Permission system
- `core-api-patterns` - API design patterns

### Implementation Skills (8)
Step-by-step workflows:
- `impl-client-scripts` - Client Script implementation
- `impl-server-scripts` - Server Script implementation
- `impl-controllers` - Controller implementation
- `impl-hooks` - Hooks implementation
- `impl-database` - Database operation workflows
- `impl-permissions` - Permission implementation
- `impl-api` - API implementation
- `impl-scheduler` - Scheduler implementation
- `impl-jinja` - Print format implementation

### Error Handling Skills (7)
Debugging and troubleshooting:
- `errors-client` - Client-side error handling
- `errors-server` - Server-side error handling
- `errors-database` - Database error handling
- `errors-permissions` - Permission error handling
- `errors-api` - API error handling
- `errors-scheduler` - Scheduler error handling
- `errors-print` - Print format error handling

### Agents (2)
Intelligent assistants:
- `agent-erpnext-dev` - Full-stack ERPNext development
- `agent-code-review` - ERPNext code review
This package contains 61 skills organized by category:

| Category | Count | Examples |
|---|:---:|---|
| Syntax | 13 | `frappe-syntax-serverscripts`, `frappe-syntax-doctypes`, `frappe-syntax-query-builder` |
| Core | 11 | `frappe-core-database`, `frappe-core-permissions`, `frappe-core-api` |
| Implementation | 14 | `frappe-impl-serverscripts`, `frappe-impl-customapp`, `frappe-impl-workflow` |
| Error Handling | 7 | `frappe-errors-serverscripts`, `frappe-errors-database`, `frappe-errors-api` |
| Operations | 9 | `frappe-ops-deployment`, `frappe-ops-backup`, `frappe-ops-bench` |
| Agents | 5 | `frappe-agent-validator`, `frappe-agent-architect`, `frappe-agent-debugger` |
| Testing | 2 | `frappe-testing-unit`, `frappe-testing-cicd` |

## Version Compatibility

All skills support:
All skills document version-specific behavior for:

- **Frappe/ERPNext v14** ✅
- **Frappe/ERPNext v15** ✅
- **Frappe/ERPNext v16** ✅
Expand All @@ -81,41 +50,41 @@ Version-specific differences are documented within each skill.

## How Skills Work

When you start a conversation, Claude loads only the skill names and descriptions (~100 tokens per skill). When your request matches a skill's description, Claude loads the full instructions. This "progressive disclosure" means you can have all 28 skills available without context bloat.
When you start a conversation, the agent loads only skill names and descriptions. When your request matches a skill description, it loads the full instructions. This progressive disclosure keeps the 61-skill package usable without loading every full skill into context.

### Triggering Skills

Skills activate automatically based on your request:

```
```text
You: "Help me create a Server Script that validates Sales Orders"
Claude: [Loads syntax-server-scripts and impl-server-scripts automatically]
Agent: [Loads frappe-syntax-serverscripts and frappe-impl-serverscripts when relevant]
```

You can also reference skills explicitly:

```
You: "Using the server-scripts skill, show me the sandbox limitations"
```text
You: "Using frappe-syntax-serverscripts, show me the sandbox limitations"
```

### Checking Available Skills

Ask Claude:
```
You: "What ERPNext skills do you have access to?"
Ask your agent:

```text
What Frappe skills do you have access to?
```

## Global Installation (Claude Code CLI)

Copy all skills to your global skills directory so they're available in every project:
Copy all skill folders to your global skills directory so they're available in every project:

```bash
cp -r skills/source/* ~/.claude/skills/
mkdir -p ~/.claude/skills
cp -R skills/source/*/* ~/.claude/skills/
```

The skills use progressive disclosure: at startup Claude only loads the name and description (~100 tokens per skill). Full instructions are loaded only when a skill is relevant to your request.

28 skills x ~100 tokens = ~2,800 tokens startup overhead. This is negligible on a 200k token context window.
The skills use progressive disclosure: at startup the agent only loads each name and description. Full instructions are loaded only when a skill is relevant to your request.

## Critical: Server Script Sandbox

Expand All @@ -137,9 +106,9 @@ This is the #1 cause of AI-generated ERPNext code failures. All skills in this p

## Support

- **Issues**: [GitHub Issues](https://github.com/OpenAEC-Foundation/Frappe_Claude_Skill_Package/issues)
- **Issues**: [GitHub Issues](https://github.com/Impertio-Studio/Frappe_Claude_Skill_Package/issues)
- **Documentation**: [Full Documentation](docs/)

## License

LGPL-3.0 License - See [LICENSE](LICENSE.md) for details.
MIT License - See [LICENSE](LICENSE.md) for details.
Loading