Skip to content
Merged
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
56 changes: 56 additions & 0 deletions .github/copilot-instructions.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
# Copilot code review β€” devantler-tech/plugins

A tool-neutral **agent-plugin marketplace** that bundles curated skills from
[`devantler-tech/skills`](https://github.com/devantler-tech/skills) into category-based plugins for
**VS Code**, **GitHub Copilot CLI**, and **Claude Code**. Canonical conventions live in
[`AGENTS.md`](../AGENTS.md); this is the concise review checklist β€” flag violations of the rules below.

## Always (every PR)

- **Conventional-Commit PR title** (`feat:`/`fix:`/`docs:`/`ci:`/`chore:`/`refactor:`). The repo is
consumed directly as a marketplace (no release pipeline), so the type drives changelog/intent β€” a
non-conventional or bracket-prefixed title is a defect.
- **Root-cause fixes only.** Flag anything that masks a failure: a CI check skipped or set
`continue-on-error` to dodge red, a weakened validation, `--no-verify`, silenced linters.
- **No secrets in plaintext** β€” flag committed tokens, keys, or kubeconfigs.
- PRs from the Daily AI Assistant carry a `> πŸ€– Generated by the Daily AI Assistant` line β€” expected,
not a finding.

## The two manifests are the contract

- The marketplace ships **two manifests that must stay byte-for-byte in sync** (modulo key order):
`.github/plugin/marketplace.json` (Copilot / VS Code) and `.claude-plugin/marketplace.json` (Claude
Code). CI diffs them (`jq -S`) and fails on drift β€” **any change to the plugin set edits both in the
same PR**. Flag a PR that touches one manifest but not the other.
- Each entry's `source` is a **relative path** (`./plugins/<name>`) so moves stay link-safe β€” flag an
absolute or URL `source`.
- Keep manifest `name`s and descriptions **tool-neutral** (cross-tool: VS Code / Copilot CLI / Claude
Code); flag Copilot-only framing where the capability isn't tool-specific.
- The **README plugin table mirrors the manifests** β€” flag a plugin-set change that doesn't update the
README in lockstep.

## Plugins & bundled skills

- A plugin is a dir under `plugins/` with a `plugin.json` (kebab-case `name` matching `^[a-z0-9-]+$`, a
`description`, a `version`, and `"skills": "skills/"`) plus a `skills/` subdir. Skill dirs sit at
`plugins/<plugin>/skills/<skill>/` (CI discovers `SKILL.md` at depth 4) β€” flag a misplaced layout or
a non-kebab plugin name.
- **Skills come from upstream β€” no lockfile.** Each bundled `SKILL.md` is installed with
`gh skill install` and validates against the [agentskills.io](https://agentskills.io) spec. **Never
hand-edit a bundled `SKILL.md` to diverge from its upstream** β€” fix it in `devantler-tech/skills` and
let the daily `update-agent-skills` PR pull it through. Flag a hand-authored or spec-invalid `SKILL.md`.

## CI & security

- **Pin every external action** to a full commit SHA with a `# v<version>` comment β€” this repo SHA-pins
all `uses:` refs (including `actions/*`), so flag any unpinned or tag-pinned ref.
- **Least privilege:** give each workflow the minimum `permissions` it needs β€” prefer `{}` at the top
level and grant per job; a workflow that genuinely needs write (e.g. the PR-opening
`update-agent-skills`) scopes it explicitly. Set `persist-credentials: false` on `actions/checkout`
unless a job must push. Keep workflows `actionlint`-clean.
- Bundle Dependabot `github_actions` bumps; call out **major** bumps. Never weaken a security control or
a check to make CI pass.

Copilot code review reads this file (and any `.github/instructions/**/*.instructions.md`, if present)
at **≀4000 chars** and does **not** read [`AGENTS.md`](../AGENTS.md). When a rule here is ambiguous,
flag it and request human clarification rather than assuming.
Loading