Skip to content
Merged
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
13 changes: 13 additions & 0 deletions .claude-plugin/marketplace.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{
"name": "mindbox-cloud-plugins",
"owner": {
"name": "mindbox.cloud"
},
"plugins": [
{
"name": "skill-review",
"source": "./plugins/skill-review",
"description": "Quick AI reviewer for Agent Skills: checks structure, workflow, references, and links. Clear report without jargon, with a summary from an exhausted data scientist."
}
]
}
36 changes: 36 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
## Type of Change

- [ ] New plugin
- [ ] Update to existing plugin
- [ ] Repository tooling / docs

---

## Plugin Checklist

> Fill this in if you are adding or modifying a plugin. Skip for tooling-only changes.

- [ ] All content in English
- [ ] `plugin.json` has `name`, `description` (English), `version`, `author`
- [ ] `SKILL.md` frontmatter complete: `name` (kebab-case, matches folder), `description` with trigger phrases and "Don't use when", `metadata.version`
- [ ] `marketplace.json` updated
- [ ] Root `README.md` plugin table updated
- [ ] `CHANGELOG.md` updated in plugin root
- [ ] CI (`validate.yml`) passes

---

## Skill Review Results

> Skip this section for tooling/docs-only changes.

Run `skill-review:skill-review` on the added or modified skill and paste the summary below.

**Scope used:** Personal / Team / Repository / Full

**Statistics:** FAIL: N, WARNING: N, PASS: N

**Top 3 issues (if any):**
1.
2.
3.
65 changes: 65 additions & 0 deletions .github/workflows/validate.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
name: Validate plugins

on:
push:
pull_request:

jobs:
validate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Validate marketplace.json and plugin structure
run: |
set -e

MARKETPLACE=".claude-plugin/marketplace.json"

echo "==> Checking marketplace.json is valid JSON"
jq empty "$MARKETPLACE"
echo " OK"

echo "==> Checking each plugin entry"
PLUGINS=$(jq -r '.plugins[].source' "$MARKETPLACE")

for SOURCE in $PLUGINS; do
PLUGIN_DIR="${SOURCE#./}"
echo ""
echo "--- Plugin: $PLUGIN_DIR"

# Directory exists
if [ ! -d "$PLUGIN_DIR" ]; then
echo "ERROR: directory not found: $PLUGIN_DIR"
exit 1
fi

# plugin.json exists and is valid JSON
MANIFEST="$PLUGIN_DIR/.claude-plugin/plugin.json"
if [ ! -f "$MANIFEST" ]; then
echo "ERROR: missing plugin.json at $MANIFEST"
exit 1
fi
jq empty "$MANIFEST"

# Required fields in plugin.json
for FIELD in name version author; do
VALUE=$(jq -r ".$FIELD // empty" "$MANIFEST")
if [ -z "$VALUE" ]; then
echo "ERROR: missing field '$FIELD' in $MANIFEST"
exit 1
fi
done

# At least one SKILL.md exists
SKILL_COUNT=$(find "$PLUGIN_DIR/skills" -name "SKILL.md" 2>/dev/null | wc -l)
if [ "$SKILL_COUNT" -eq 0 ]; then
echo "ERROR: no SKILL.md found under $PLUGIN_DIR/skills/"
exit 1
fi

echo " OK (${SKILL_COUNT} skill(s))"
done

echo ""
echo "==> All plugins valid"
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
*.DS_Store
.env
*.log
162 changes: 162 additions & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,162 @@
# agent-skills β€” Developer Guide for Claude Code

## Repository Purpose

This is a public marketplace of Claude Code plugins by mindbox.cloud. Each plugin extends Claude Code with skills (slash commands), agents, hooks, or MCP servers.

Plugins are designed to be shared with the community. All content must be in English.

---

## Repository Structure

```
agent-skills/
β”œβ”€β”€ .claude-plugin/
β”‚ └── marketplace.json # marketplace registry β€” update when adding a plugin
β”œβ”€β”€ plugins/
β”‚ └── <plugin-name>/
β”‚ β”œβ”€β”€ .claude-plugin/
β”‚ β”‚ └── plugin.json # plugin manifest
β”‚ β”œβ”€β”€ skills/
β”‚ β”‚ └── <skill-name>/
β”‚ β”‚ β”œβ”€β”€ SKILL.md
β”‚ β”‚ └── references/
β”‚ β”œβ”€β”€ CHANGELOG.md
β”‚ └── README.md
β”œβ”€β”€ CLAUDE.md
β”œβ”€β”€ CONTRIBUTING.md
└── README.md
```

---

## How to Add a New Plugin

### Step 1 β€” Create the directory structure

```bash
mkdir -p plugins/<plugin-name>/.claude-plugin
mkdir -p plugins/<plugin-name>/skills/<skill-name>/references
```

Plugin names: kebab-case, no spaces.

### Step 2 β€” Write `plugin.json`

```json
{
"name": "plugin-name",
"description": "One-line description in English",
"version": "1.0.0",
"author": {
"name": "Author or org name"
}
}
```

Required fields: `name`. Recommended: `description`, `version`, `author`.

### Step 3 β€” Write `SKILL.md`

```yaml
---
name: skill-name # kebab-case, matches folder name
description: >
What it does β€” one sentence.
Use when user says "...", "...", "...".
Don't use when: user asks for X (use y-skill instead), user asks for Z.
metadata:
version: 1.0.0 # semver β€” instruction contract version
---

Skill body: orchestration logic, steps, critical rules, troubleshooting.
Put domain knowledge and checklists in references/, not inline.
```

Frontmatter requirements:
- `name` β€” kebab-case, 1–64 chars, matches folder name
- `description` β€” WHAT it does + WHEN to use (trigger phrases) + "Don't use when" (negative triggers)
- `metadata.version` β€” semver

### Step 4 β€” Register in `marketplace.json`

Add an entry to `.claude-plugin/marketplace.json`:

```json
{
"name": "mindbox-cloud-plugins",
"owner": { "name": "mindbox.cloud" },
"plugins": [
{
"name": "plugin-name",
"source": "./plugins/plugin-name",
"description": "Same one-line description as plugin.json"
}
]
}
```

### Step 5 β€” Write `README.md` for the plugin

Human-facing documentation at `plugins/<plugin-name>/README.md`. Describe: what it does, review scopes (if applicable), installation command, usage trigger phrases.

### Step 6 β€” Write `CHANGELOG.md`

At `plugins/<plugin-name>/CHANGELOG.md`. Required for stage 4 lifecycle hygiene (LC03).

### Step 7 β€” Update root `README.md`

Add the plugin to the plugin table in the root README.

---

## Version Policy

> Any meaningful change to a plugin requires a `plugin.json` version bump. Without it, users with the plugin already installed will not receive the update β€” their client caches the old version.

There are two independent semvers per plugin:

| File | Version type | When to increment |
|---|---|---|
| `plugin.json` | Package release version | **Any meaningful change** β€” skill logic, new files, bug fixes, prompt edits |
| `SKILL.md` `metadata.version` | Instruction contract version | Tracks internal iteration of the skill logic |

Both must be updated when making changes. They are independent β€” do not conflate them.

---

## Conventional Commit Style

Use conventional commits for all changes to this repository:

```
feat(plugin-name): add initial public release
fix(skill-name): correct trigger phrase to avoid overtriggering
docs(skill-review): update README with new scope table
chore: add .gitignore
```

Scopes: use the plugin or skill name when the change is scoped to one plugin; omit scope for repo-wide changes.

---

## Pre-merge Checklist

Before merging a plugin PR:

- [ ] All content in English
- [ ] `plugin.json` has `name`, `description` (English), `version`, `author`
- [ ] `SKILL.md` frontmatter complete: `name`, `description` with trigger phrases and "Don't use when", `metadata.version`
- [ ] `marketplace.json` updated with the new plugin entry
- [ ] Root `README.md` plugin table updated
- [ ] `CHANGELOG.md` present in the plugin root
- [ ] CI (`validate.yml`) passes

---

## References

- [Plugins reference](https://code.claude.com/docs/en/plugins-reference)
- [Plugin marketplaces](https://code.claude.com/docs/en/plugin-marketplaces)
- [Skills](https://code.claude.com/docs/en/skills)
73 changes: 73 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
# Contributing to agent-skills

Thank you for your interest in contributing. This repository hosts reviewed, documented Claude Code plugins. We aim to keep the quality bar high so that every plugin is genuinely useful and well-structured.

---

## Prerequisites

- [Claude Code](https://claude.ai/code) installed and working
- Familiarity with the [Agent Skills Specification](https://agentskills.io/specification)
- Understanding of `SKILL.md` frontmatter and the progressive disclosure pattern

---

## How to Propose a New Plugin

1. **Open an issue first** β€” describe what the plugin does, who it is for, and what skills it will include. This avoids building something that duplicates an existing plugin or does not fit the repo's scope.
2. **Fork and branch** β€” create a feature branch named `feat/<plugin-name>`.
3. **Implement the plugin** β€” follow the structure and requirements in [CLAUDE.md](./CLAUDE.md).
4. **Open a PR** β€” fill in the PR template checklist completely.

---

## Plugin Quality Bar

Every plugin in this repository must meet these criteria before merging:

- **English only** β€” all content in all files must be in English.
- **`plugin.json` complete** β€” `name`, `description`, `version`, `author` are all present.
- **`SKILL.md` frontmatter complete** β€” `name` (kebab-case, matches folder), `description` with concrete trigger phrases and "Don't use when" negative triggers, `metadata.version` in semver.
- **Progressive disclosure** β€” workflow logic in `SKILL.md`, domain knowledge in `references/`. No monolithic skill files.
- **`marketplace.json` updated** β€” the new plugin is registered.
- **Root `README.md` updated** β€” the plugin table includes the new entry.
- **`CHANGELOG.md` present** at the plugin root.
- **CI passes** β€” the `validate.yml` workflow runs green.

See [CLAUDE.md](./CLAUDE.md) for the full pre-merge checklist and structural requirements.

---

## Language Requirement

All content β€” skill instructions, checklists, report templates, READMEs β€” must be written in English. This is a hard requirement for inclusion in the public marketplace.

If you are translating a skill from another language, preserve the logic exactly. Do not paraphrase in a way that changes meaning. Technical IDs (ST01, WF01, etc.) are not translated.

---

## Pull Request Process

1. Fill in the PR template completely β€” skipped checklist items will delay the review.
2. One PR per plugin or per meaningful change β€” do not bundle unrelated plugins in one PR.
3. A maintainer will review within a reasonable timeframe. Expect at least one round of feedback.
4. Squash or rebase before merging β€” keep the commit history clean.

---

## Commit Style

We use [Conventional Commits](https://www.conventionalcommits.org/):

```
feat(plugin-name): description of what was added
fix(skill-name): description of what was fixed
docs: update CONTRIBUTING.md
chore: bump CI action versions
```

---

## Code of Conduct

Be respectful and constructive. Feedback on skill content should focus on correctness, clarity, and adherence to the quality bar β€” not personal preference.
Loading
Loading