Files
muratcankoylan__agent-skill…/CONTRIBUTING.md
2026-08-11 09:51:38 -04:00

137 lines
7.1 KiB
Markdown

# Contributing to Agent Skills for Context Engineering
Thank you for your interest in contributing to this collection of Agent Skills for Context Engineering. This document provides guidelines and instructions for contributing.
## How to Contribute
### Reporting Issues
If you find errors, unclear explanations, or missing topics, please open an issue with:
- A clear description of the problem
- The skill and section where the issue was found
- Suggested improvements if you have them
### Submitting Changes
For substantive changes, please:
1. Fork the repository
2. Create a feature branch for your changes
3. Make changes following the skill template structure
4. Ensure SKILL.md files remain under 500 lines
5. Add references or scripts as appropriate
6. Submit a pull request with a clear description of changes
Changes to the autonomous-organization harness should begin with the dependency and authority contracts in [`docs/specs/README.md`](docs/specs/README.md). Publishing a draft specification does not accept it. An accepted contract, constitutional change, or lifecycle transition requires an explicit human-merged pull request.
### Adding New Skills
When adding new skills:
1. Use the template in `template/SKILL.md`
2. Follow naming conventions (lowercase with hyphens)
3. Include both SKILL.md and appropriate references/scripts
4. Update the root README.md to include the new skill
5. Update root `SKILL.md` and manifests when publishing the skill. New published skills require an explicit `.claude-plugin/marketplace.json` skill path. `.plugin/plugin.json` normally only needs version or description changes because Open Plugins discovers `./skills/`.
6. Update `researcher/corpus/index.json` with the new skill's name, activation scenarios, mechanism IDs, and claim IDs
7. Add at least one entry to `researcher/fixtures/activation-cases.jsonl`; include rejected or adjacent skills when the boundary is easy to confuse
8. Ensure content is platform-agnostic (works across Cursor, Claude Code, etc.)
9. Run the unit tests and deterministic gates before opening a PR:
- `python3 -m pip install --require-hashes -r requirements-dev.txt`
- `python3 -m unittest researcher.scripts.tests.test_skill_frontmatter`
- `python3 researcher/scripts/validate_platform_compat.py --require-reference-validator`
- `python3 researcher/scripts/validate_public_repo.py`
- `python3 researcher/scripts/validate_repo.py --strict`
- `python3 researcher/scripts/skill_health.py --strict --no-history`
- `python3 researcher/scripts/check_activation_cases.py`
- `python3 researcher/scripts/run_benchmarks.py`
## Researcher Operating System Contributions
The repository ships with a file-based research-to-skill operating system in `researcher/`. Contributions that introduce skill changes derived from external research should flow through it.
### Run lifecycle
```
initialized -> retrieved -> evaluated -> proposed -> novelty_checked -> validated -> pr_ready -> closed
```
Use `researcher/scripts/research_loop.py` subcommands rather than editing `run-state.json` by hand. Each transition appends to the run's thread log and updates the state machine atomically.
### Mechanism promotion
New behavior changes proposed for the corpus go through `researcher/mechanisms/registry.jsonl`. The promotion path is gated:
1. Author the proposal in the run's `proposals/mechanism-proposal.jsonl`.
2. Pass `validate_run.py --run-dir <run>`.
3. Run `research_loop.py promote-mechanisms --run-dir <run> --reviewed-by <handle>`. This appends to the registry and to `researcher/mechanisms/ledgers/accepted.jsonl`.
Rejected mechanisms append to `ledgers/rejected.jsonl` so future agents do not rediscover them.
### Claim provenance
Any numeric, benchmark, or volatile claim added to a published skill should also receive an entry in `researcher/claims/index.jsonl` with `claim_id`, `owning_skill`, `section`, `source_url`, `retrieved_at`, `evidence_strength`, `volatility`, and `last_reviewed`. The validator checks ownership and source paths.
### Parked runs
Runs that hit human-review gates land in `researcher/queue/parked.jsonl` and the dashboard at `researcher/reports/parked-review.md`. Reviewers should:
1. Read `researcher/runs/<run-id>/THREAD.md` and `sources/evidence/`.
2. Complete the next required step (retrieve, evaluate, propose, novelty, validate-run, or pr-ready).
3. Close the run with `research_loop.py close --status accepted|rejected|reference-only|abandoned --reason <text> --reviewed-by <handle>`.
The continuous loop will reap closed runs into `researcher/queue/done.jsonl` on the next iteration.
### Runtime state is not committed
`researcher/runs/*/` (except the seed run), `researcher/queue/*.jsonl`, and `researcher/reports/{logs,snapshots,loop-events.jsonl,loop-failures.jsonl,status.md,parked-review.md}` are gitignored. PRs should not introduce new committed runs; bug fixtures belong in `researcher/fixtures/` instead.
## Skill Structure Requirements
Each skill must include:
- YAML frontmatter with `name` and `description` fields. Quote `description` values that contain colons (`:`) so strict YAML parsers used by Cursor, Claude Code, and Codex can load the skill. Run `python3 researcher/scripts/validate_repo.py --strict` before opening a PR.
- `## When to Activate` with positive triggers and an explicit `Do not activate` boundary for adjacent skills
- `## Core Concepts` focused on behavior-changing mechanisms, not generic background
- `## Practical Guidance` with an executable workflow, checklist, decision table, or operating rule
- `## Examples` with at least one worked artifact, before/after, or boundary example
- `## Guidelines`, `## Gotchas`, `## Integration`, and `## References`
- Integration notes that explain routing and composition boundaries, not only topical relationships
Any numeric, benchmark, volatile, or vendor-performance claim in a published skill must either reference a `claim-*` ID from `researcher/claims/index.jsonl` or be softened and moved to dated reference material. Any reusable behavior pattern should be represented in `researcher/mechanisms/registry.jsonl` and linked from `researcher/corpus/index.json`.
Optional additions:
- `references/` directory with additional documentation
- `scripts/` directory with executable examples
- Multiple markdown files for complex skills
## Content Guidelines
### Writing Style
- Be direct and precise
- Use technical terminology appropriately
- Include specific guidance, not vague recommendations
- Provide concrete examples
- Point out complexity and trade-offs
### Avoiding Platform Specificity
Skills should work across agent platforms. Avoid:
- Platform-specific tool names without abstraction
- Vendor-locked examples
- Features specific to one agent product
### Keeping Skills Focused
Each skill should have a single focus. If a topic grows too large, consider splitting into multiple skills with clear dependencies.
## Code of Conduct
This project follows a professional, technical collaboration model. Be respectful of different perspectives and focus on improving the collective knowledge base.
## Questions
For questions about contributing, please open an issue for discussion.