# 🤝 Contributing Guide - V4 Enterprise Edition

**Thank you for wanting to make this repo better!** This guide shows you exactly how to contribute, even if you're new to open source.
With V4, we raised the bar for quality. Please read the **new Quality Standards** below carefully.

---

## 🧐 The "Quality Bar" (V4 Standard)

**Critical for new skills:** Every skill submitted must pass our **5-Point Quality Check** (see `docs/QUALITY_BAR.md` for details):

1.  **Metadata**: Correct Frontmatter (`name`, `description`).
2.  **Safety**: No harmful commands without "Risk" labels.
3.  **Clarity**: Clear "When to use" section.
4.  **Examples**: At least one copy-paste usage example.
5.  **Actions**: Must define concrete steps, not just "thoughts".

---

## Ways to Contribute

You don't need to be an expert! Here are ways anyone can help:

### 1. Improve Documentation (Easiest!)

- Fix typos or grammar
- Make explanations clearer
- Add examples to existing skills
- Translate documentation to other languages

### 2. Report Issues

- Found something confusing? Tell us!
- Skill not working? Let us know!
- Have suggestions? We want to hear them!

### 3. Create New Skills

- Share your expertise as a skill
- Fill gaps in the current collection
- Improve existing skills

### 4. Test and Validate

- Try skills and report what works/doesn't work
- Test on different AI tools
- Suggest improvements

---

## Local development setup

To run validation, index generation, and README updates locally:

1. **Node.js** (for catalog and installer): `npm ci`
2. **Python 3** (for validate, index, readme scripts): install dependencies with
   ```bash
   pip install -r requirements.txt
   ```
   Then you can run `npm run chain` (validate → index → readme) and `npm run catalog`.

**Validation:** The canonical validator is **Python** (`scripts/validate_skills.py`). Use `npm run validate` (or `npm run validate:strict` for CI-style checks). The JavaScript validator (`scripts/validate-skills.js`) is legacy/optional and uses a different schema; CI and PR checks rely on the Python validator only.

**npm audit:** CI runs `npm audit --audit-level=high`. To fix issues locally: run `npm audit`, then `npm update` or `npm audit fix` as appropriate; for breaking changes, update dependencies manually and run tests.

---

## How to Create a New Skill

### Step-by-Step Guide

#### Step 1: Choose Your Skill Topic

Ask yourself: "What do I wish my AI assistant knew better?".
Example: "I'm good at Docker, let me create a Docker skill".

#### Step 2: Create the Folder Structure

Skills live in the `skills/` directory. Use `kebab-case` for folder names.

```bash
# Navigate to skills
cd skills/

# Create your skill folder
mkdir my-awesome-skill
cd my-awesome-skill

# Create the SKILL.md file
touch SKILL.md
```

#### Step 3: Write Your SKILL.md

Every skill needs this basic structure. **Copy this template:**

```markdown
---
name: my-awesome-skill
description: "Brief one-line description of what this skill does"
---

# Skill Title

## Overview

Explain what this skill does and when to use it.

## When to Use This Skill

- Use when [scenario 1]
- Use when [scenario 2]

## How It Works

Detailed step-by-step instructions for the AI...

## Examples

### Example 1

\`\`\`
code example here
\`\`\`

## Best Practices

- ✅ Do this
- ❌ Don't do this
```

#### Step 4: Validate (CRITICAL V4 STEP)

Use the canonical validator `scripts/validate_skills.py` via `npm run validate`. **We will not merge PRs that fail this check.**

```bash
npm run validate        # soft mode (warnings only)
npm run validate:strict # strict mode (what CI runs)
```

This checks:

- ✅ `SKILL.md` exists
- ✅ Frontmatter is correct
- ✅ Name matches folder name
- ✅ Quality Bar checks passed

#### Step 5: Submit Your Skill

```bash
git add skills/my-awesome-skill/
git commit -m "feat: add my-awesome-skill"
git push origin my-branch
```

---

## Skill Template (Copy & Paste)

Save time! Copy this template:

```markdown
---
name: your-skill-name
description: "One sentence describing what this skill does and when to use it"
---

# Your Skill Name

## Overview

[2-3 sentences explaining what this skill does]

## When to Use This Skill

- Use when you need to [scenario 1]
- Use when you want to [scenario 2]

## Step-by-Step Guide

### 1. [First Step Name]

[Detailed instructions]

## Examples

### Example 1: [Use Case Name]

\`\`\`language
// Example code here
\`\`\`

## Best Practices

- ✅ **Do:** [Good practice]
- ❌ **Don't:** [What to avoid]

## Troubleshooting

**Problem:** [Common Issue]
**Solution:** [How to fix it]
```

---

## Commit Message Guidelines

Use these prefixes:

- `feat:` - New skill or major feature
- `docs:` - Documentation improvements
- `fix:` - Bug fixes
- `refactor:` - Code improvements without changing functionality
- `test:` - Adding or updating tests
- `chore:` - Maintenance tasks

**Examples:**

```
feat: add kubernetes-deployment skill
docs: improve getting started guide
fix: correct typo in stripe-integration skill
```

---

## Learning Resources

### New to Git/GitHub?

- [GitHub's Hello World Guide](https://guides.github.com/activities/hello-world/)
- [Git Basics](https://git-scm.com/book/en/v2/Getting-Started-Git-Basics)

### New to Markdown?

- [Markdown Guide](https://www.markdownguide.org/basic-syntax/)

---

## Code of Conduct

- Be respectful and inclusive
- Welcome newcomers
- Focus on constructive feedback
- **No harmful content**: See `docs/SECURITY_GUARDRAILS.md`.

---

**Thank you for making this project better for everyone!**
Every contribution, no matter how small, makes a difference. Whether you fix a typo, improve a sentence, or create a whole new skill - you're helping thousands of developers!
