# Distribution

Owns where plugin and marketplace content comes from and how it is fetched, under...

- Repository: https://github.com/ai-driven-dev/framework (542 stars)
- Category: Git and review
- License: MIT
- Last updated: 2026-11-01
- Runs scripts: no, instructions only

## Install

Claude Code: `npx skills add ai-driven-dev/framework --skill distribution -g -a claude-code -y`
Codex: `npx skills add ai-driven-dev/framework --skill distribution -g -a codex -y`
Cursor: `npx skills add ai-driven-dev/framework --skill distribution -g -a cursor -y`
Gemini CLI: `npx skills add ai-driven-dev/framework --skill distribution -g -a gemini-cli -y`
Claude Code plugin marketplace: `/plugin marketplace add ai-driven-dev/framework`

## Description

Owns where plugin and marketplace content comes from and how it is fetched, under src/contexts/distribution/, marketplace registration, catalog parsing, and the ports/adapters that reach git and HTTP. Use when adding a new marketplace source kind, a catalog parser for a foreign format, or a fetch/cache/trust-store adapter. Do NOT use for what a tool does with fetched content, use `tools` or `translate`. Do NOT use for recording what got installed on a project, use `framework`.

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# Distribution

`distribution` is a leaf: it depends on `kernel` only, and knows no tool and no manifest. It
answers exactly one question, where does content come from, and how is it fetched, for
whoever asks. `framework` is the only context that reaches it (`framework → distribution`); a
plugin's own content and how it gets translated are someone else's job once it has arrived here.

## What goes in

| Concept | Location |
|---|---|
| A marketplace registration (name, source, scope, staleness) | `domain/marketplace.ts`, `domain/marketplace-source-mode.ts` |
| A cached catalog fetch | `domain/ports/marketplace-cache.ts` |
| The plugin catalog shape | `domain/catalog.ts` (the Claude-shaped parser lives here too) |
| A reader for a non-Claude catalog shape | `domain/catalog-parsers/` |
| A port this context's callers hold | `domain/ports/`, registry, cache, trust-store, catalog-repository, fetcher, raw-catalog-fetcher |
| Add / list / refresh / register / resolve / fetch a marketplace source | `application/` |
| The concrete adapter behind one of the six ports | `infrastructure/` |

## How

The rest: https://github.com/ai-driven-dev/framework/blob/HEAD/cli/.claude/skills/distribution/SKILL.md
