Agent skill
Drive feega from your coding agent: an infinite canvas of typed nodes (media, social feeds, products, ads, generations), driven by a person, the in-app chat, or an agent here. Prefer MCP tools when connected; otherwise use the feega CLI. Same OAuth identity — no static API tokens.
Prefer MCP. When feega MCP is connected, call tools like query and canvas_tool directly. Fall back to the CLI only when MCP is unavailable.
Choose interface
| Situation | Action |
|---|---|
| feega MCP is connected | Call MCP tools (query, canvas_tool, run_node_generation, …) |
| MCP not available | Shell: feega … after feega login |
Never guess an org, a brand or a project — read it back with `query` first. Never invent REST endpoints or API keys.
Install the skill
Publishable Agent Skill (agentskills.io / skills.sh):
npx skills add andreabuttarelli/feega --skill feega Or install the marketplace plugin (skill + remote MCP), or copy the folder into your agent's skills directory:
# Claude Code
/plugin marketplace add andreabuttarelli/feega
/plugin install feega@feega
# Codex
codex plugin marketplace add andreabuttarelli/feega You can also copy skills/feega/ into .cursor/skills/feega/ or ~/.claude/skills/feega/.
Auth (always OAuth)
- Local MCP / CLI: run
feega loginonce in a terminal. The session lands in~/.config/feega/session.jsonand the CLI and the MCP server share it. - Remote MCP (
https://mcp.feega.app/mcp): your host does the OAuth round itself. Missing Bearer → 401, which is the challenge, not a failure. - There is no sign-in tool. Confirm with a `query` on `brands` (MCP) or `feega brands` (CLI): rows come back, or nobody is signed in.
Operating rules
- Never guess an org, a brand or a project. Read it back with `query` first — guessing spends a real organisation's credits.
- Post and ad campaign ids accept short unambiguous prefixes from list output — never guess if ambiguous.
- run_node_generation needs the node's current version (optimistic concurrency): read it first, and retry on `conflict` — never assume your write landed.
- A canvas node is raw material; a post is the promoted artifact ready to schedule. Writing a node is not an action on the world.
- Confirm before deleting unless the user clearly asked: delete_row does not come back.
- An ad campaign always drafts unapproved — approve_ad_campaign only works from a signed-in person's own session, never an API key.
Examples
"Show me every draft post for flashcamp"
"Draft a post for flashcamp from this photo"
"Approve the post about the new drop"
"What's on flashcamp's calendar this week?"
"Draft a Meta ad campaign for our new arrivals" Supported agents
- Claude Code — skill auto-installs, MCP connects out of the box
- Cursor — MCP + terminal skill
- GitHub Copilot — via CLI commands
- Windsurf — via CLI commands
CLI fallback
If MCP is not connected, install the CLI and work from the shell:
curl -sSL https://raw.githubusercontent.com/andreabuttarelli/feega/main/cli/scripts/install.sh | bash
feega login
feega brands
feega content <slug> --status pending_user
feega approve <slug> --all