← Files Realize PluginARCHIVED FILE

CONTRIBUTING.md

3.23 KB · Nov 12, 2026 · 12:09 UTC

↓ Download file

# Contributing

Thanks for your interest in improving the Realize Plugin. Contributions of all shapes are welcome — bug reports, doc fixes, new skills, test scenarios, MCP sync PRs.

## Ground rules

- Be respectful and follow our [Code of Conduct](CODE_OF_CONDUCT.md).
- This plugin wraps the [Realize remote MCP](https://github.com/taboola/realize-mcp). If your change needs a new MCP tool or a behavioral change on the server side, open an issue on the MCP repo first.
- Do not add direct API calls to Realize from this plugin (no `curl`, no `httpx`). All data access flows through MCP tools — see [.claude/CLAUDE.md](.claude/CLAUDE.md) for the reasoning.
- Do not add code paths that call MCP tools that don't exist in the current upstream release. User-facing requests for actions not yet exposed as MCP tools (today: delete, duplicate, bulk operations) are handled by the `manage-campaigns` skill's UI fallback section. When upstream adds new write tools, wire them through `manage-campaigns` with an explicit PR — never route writes directly through the agent. New writes must inherit the tiered preview-then-confirm gate and the mandatory `▶ WRITE TARGET` account header.

## Before you start

1. Open an issue describing the change (or comment on an existing one). For small fixes — typos, broken links, CSV-example corrections — you can go straight to a PR.
2. Check that your change fits the plugin's scope: **analyst-style conversational workflows over Realize data**. Scope-expanding ideas (e.g., supporting a different ads product) belong in a separate plugin.

## Development workflow

1. Fork and branch from `main`.
2. Make your change. Keep PRs focused — one change per PR.
3. Update documentation:
   - New skill? Add a row to the README's "Available Skills" table and at least one test scenario in `tests/test-scenarios-read.md` (read-only paths) or `tests/test-scenarios-write.md` (destructive paths — include side effects + cleanup).
   - Changed behavior? Note it in `CHANGELOG.md` under the next unreleased version.
4. Verify locally:
   - `python -m json.tool < .claude-plugin/plugin.json` (valid JSON)
   - `python -m json.tool < .mcp.json` (valid JSON)
   - All `*.md` files in `agents/` and `skills/` have valid YAML frontmatter with a `name:` field.
5. Submit the PR with a description that covers **what**, **why**, and any user-facing impact.

## PR checklist

- [ ] Linked issue (if one exists)
- [ ] README updated (if user-facing)
- [ ] CHANGELOG entry added
- [ ] Frontmatter + JSON validates
- [ ] At least one test scenario touches the new behavior
- [ ] Any new MCP write tool routes through the `manage-campaigns` skill on Claude Code, and the preview-then-confirm gate in `os/guardrails.md` covers it for every runtime (Codex included)
- [ ] New write paths have a scenario in `tests/test-scenarios-write.md` with explicit side-effects + cleanup
- [ ] Pre-approval of new write tools stays out of the committed `.claude/settings.json` — per-user opt-in goes through the gitignored `.claude/settings.local.json` template instead
- [ ] No secrets, tokens, or account-specific data in committed files

## Contact

For questions that don't belong in an issue, email the Realize team at Taboola (TODO: add team alias before the first public release).

SHA-256: 3fa130060122deb56588c10e0646e45cb3abdf8a1b031da45d8905e235804715