Agent skill

Upload Artifact

by closedloop-ai in closedloop-ai/claude-plugins

Upload a file as a ClosedLoop document (PRD, implementation plan, feature, or template).

Apache-2.0Auto-check: notesAgent Workflows

Install Upload Artifact

skills CLI
$ npx skills add closedloop-ai/claude-plugins --skill upload-artifact -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install closedloop-ai/claude-plugins upload-artifact --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/closedloop-ai/claude-plugins.git skills-src && mkdir -p .claude/skills && cp -r skills-src/plugins/platform/skills/upload-artifact .claude/skills/upload-artifact && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
upload-artifact
GitHub stars
122
Token cost
~1.4k tokens
SKILL.md length
571 words
Files
2 (incl. scripts)
Skills in repo
41
Repo updated
First seen
Licence
Apache-2.0

At a glance

Upload a file as a ClosedLoop document (PRD, implementation plan, feature, or template).

  • Works in 2 steps: Script mode (preferred) — uses a… → MCP fallback — reads the file into…
  • : upload artifact
  • SKILL.md covers Workflow, Script Mode (required env vars…, MCP Fallback (required env… and Script Parameters
  • Runs Python scripts from its folder; calls uv; needs CLOSEDLOOP_API_KEY

What it does

Upload Artifact is an agent skill from closedloop-ai/claude-plugins. Upload a file as a ClosedLoop document (PRD, implementation plan, feature, or template). Reads file content and uploads via MCP without consuming conversation context. Also supports creating new versions of existing documents. Triggers on: "upload artifact", "upload PRD", "upload implementation plan", "upload feature", "create artifact from file", "save as artifact", "push to closedloop", "new artifact version", "test artifact upload", "verify artifact content", "upload to project".

Its SKILL.md is about 1.4k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files, including scripts (for example `scripts/upload_artifact.py`).

It sits in Agent Workflows, covering PRD writing, Planning and MCP servers. It works with Model Context Protocol. The repository describes itself as: Open-source Claude Code plugins for multi-agent software delivery. Plan-first SDLC workflow, code review, LLM quality judges, and self-learning — grounded in your codebase… The licence is Apache-2.0.

When your agent uses it

  • : upload artifact
  • Upload implementation plan
  • Create artifact from file
  • Save as artifact

Example prompts

  • “upload artifact”
  • “upload PRD”
  • “upload implementation plan”
  • “/upload-artifact”

Requirements

  • Python 3
  • A credential in CLOSEDLOOP_API_KEY
  • Pre-approved tools (allowed-tools): Bash, Read, AskUserQuestion, mcp__closedloop__create-document, mcp__closedloop__create-document-version, mcp__closedloop__list-projects

Workflow steps

2 steps, taken from the first numbered list in SKILL.md.

  1. Script mode (preferred) — uses a standalone Python script that reads the
  2. MCP fallback — reads the file into context and calls mcpclosedloopcreate-document

What it can do on your machine

Read from SKILL.md and the folder at commit 476b54c. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves these tools, so the agent can use them without asking each time:

    • Bash
    • Read
    • AskUserQuestion
    • mcp__closedloop__create-document
    • mcp__closedloop__create-document-version
    • mcp__closedloop__list-projects

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships 1 file in scripts/ (Python), which the agent can run.

    Shell commands in SKILL.md call:

    • uv

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use uv, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names these keys or tokens, usually read from environment variables:

    • CLOSEDLOOP_API_KEY

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Upload Artifact loads about 1.4k tokens when it runs. Until then it costs about 126 tokens; SKILL.md has 571 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~126
When it runs · the whole SKILL.md, loaded when a task matches
~1.4k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check: notes

The automated check noted patterns worth knowing about, such as sudo or a known installer.

  • NoteMentions a .env fileSKILL.md:35
    otherwise rely on a `.env.local` file in the current working directory:
  • NotePre-approves every shell command (allowed-tools: Bash)SKILL.md
    allowed-tools: Bash, Read, AskUserQuestion, mcp__closedloop__create-document, mcp__closedloop__create-document-vers

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.

SKILL.md

The full file from closedloop-ai/claude-plugins at commit 476b54c, republished under its Apache-2.0 licence (© closedloop-ai). 571 words, ~1,375 tokens.

Download SKILL.mdSave it as .claude/skills/upload-artifact/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
upload-artifact
description
Upload a file as a ClosedLoop document (PRD, implementation plan, feature, or template). Reads file content and uploads via MCP without consuming conversation context. Also supports creating new versions of existing documents. Triggers on: "upload artifact", "upload PRD", "upload implementation plan", "upload feature", "create artifact from file", "save as artifact", "push to closedloop", "new artifact version", "test artifact upload", "verify artifact content", "upload to project".
allowed-tools
Bash, Read, AskUserQuestion, mcp__closedloop__create-document, mcp__closedloop__create-document-version, mcp__closedloop__list-projects

Upload Artifact

Upload file content as a ClosedLoop MCP artifact. Two modes:

  1. Script mode (preferred) — uses a standalone Python script that reads the file and calls MCP directly over Streamable HTTP. No conversation context consumed for file content. Requires CLOSEDLOOP_API_KEY and NEXT_PUBLIC_MCP_SERVER_URL to already be present in the current shell environment.

  2. MCP fallback — reads the file into context and calls mcp__closedloop__create-document directly. Uses Claude Code's existing MCP auth. Used when the required script-mode environment variables are not available.

Workflow

Follow these steps in order:

Step 1: Resolve Credentials and Choose Mode

Read these values from the current shell environment. Do not read, source, or otherwise rely on a .env.local file in the current working directory:

  • CLOSEDLOOP_API_KEY — the API key (starts with sk_live_)
  • NEXT_PUBLIC_MCP_SERVER_URL — the MCP server URL

If both exist → use script mode (Steps 2a–5a). If either variable is missing → use MCP fallback (Steps 2b–5b).


Script Mode (required env vars available)

Step 2a: List Projects

Run the script with --list-projects:

bash
uv run --with 'mcp[cli]>=2,<3' ${CLAUDE_SKILL_DIR}/scripts/upload_artifact.py \
  --url "$NEXT_PUBLIC_MCP_SERVER_URL" \
  --api-key "$CLOSEDLOOP_API_KEY" \
  --list-projects

Parse the JSON output. Extract the items array. Each item has id and name.

Use AskUserQuestion to present the projects to the user:

  • Question: "Which project should this artifact be uploaded to?"
  • Options: one per project, label = project name, description = project ID

If only one project exists, skip the question and use it automatically.

Step 3a: Collect Remaining Parameters

Use AskUserQuestion to collect any parameters the user hasn't already specified:

  • file_path: "Which file should be uploaded?"
  • title: "What title should this document have?"
  • type: "What type of document?" (options: PRD, IMPLEMENTATION_PLAN, FEATURE, TEMPLATE)

Only ask for parameters the user hasn't already specified. For example, if they said "upload /tmp/my-prd.txt as a PRD", you already have the file path and type — only ask for the title.

Step 4a: Upload via Script
bash
uv run --with 'mcp[cli]>=2,<3' ${CLAUDE_SKILL_DIR}/scripts/upload_artifact.py \
  --url "$NEXT_PUBLIC_MCP_SERVER_URL" \
  --api-key "$CLOSEDLOOP_API_KEY" \
  --file <FILE_PATH> \
  --title "<TITLE>" \
  --type <TYPE> \
  --project-id <PROJECT_ID>

Add --verify if the user requested verification or if testing limits.

Add --artifact-id <ID_OR_SLUG> instead of --title/--type/--project-id when creating a new version of an existing document. The flag accepts a UUID or a user-facing slug (PRD-*, PLN-*, FEA-*); the server resolves it.

Show full SKILL.md (237 more words)Show less
Step 5a: Report Result

Parse the JSON output and report to the user:

  • Document slug (e.g. PLN-376) and ID
  • Content length (characters)
  • Upload status
  • Verification results (if --verify was used)

MCP Fallback (required env vars missing)

Step 2b: List Projects

Call mcp__closedloop__list-projects to get available projects.

Use AskUserQuestion to let the user pick a project (skip if only one).

Step 3b: Collect Remaining Parameters

Same as Step 3a — use AskUserQuestion for any missing file_path, title, or type.

Step 4b: Upload via MCP Tool

Read the file content with the Read tool, then call:

  • mcp__closedloop__create-document for new documents (pass title, type, content, and projectId). type is one of PRD, IMPLEMENTATION_PLAN, FEATURE, or TEMPLATE.
  • mcp__closedloop__create-document-version for new versions (pass documentId and content). documentId accepts a UUID or a user-facing slug (PRD-*, PLN-*, FEA-*).

Note: the file content will be loaded into conversation context in this mode.

Step 5b: Report Result

Report the document slug (PRD-*, PLN-*, FEA-*) and ID from the MCP tool response.

Script Parameters

FlagRequiredDescription
--urlNoMCP server URL (default: http://localhost:3010/mcp)
--api-keyYesClosedLoop API key (sk_live_...)
--list-projectsNoList projects and exit
--fileUploadPath to content file
--titleCreateDocument title
--typeCreatePRD, IMPLEMENTATION_PLAN, FEATURE, or TEMPLATE
--project-idNoProject ID or slug (PRO-*)
--workstream-idNoWorkstream ID or slug (WRK-*)
--artifact-idVersionExisting document ID or slug (PRD-*/PLN-*/FEA-*) for new version
--verifyNoFetch back after upload and compare lengths

© closedloop-ai, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 1 other file (scripts) in plugins/platform/skills/upload-artifact of closedloop-ai/claude-plugins.

  • SKILL.md
  • scripts/upload_artifact.py

Open the folder on GitHubat commit 476b54c

Compare with similar skills

Upload Artifact next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Upload Artifact compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Upload Artifact this skillclosedloop-ai/claude-plugins122—~1.4kAutomated safety check: NotesApache-2.0
Discoveranombyte93/prd-taskmaster604—~2.4kAutomated safety check: PassMIT
Handoffanombyte93/prd-taskmaster604—~5kAutomated safety check: PassMIT
Notion Spec To ImplementationJetBrains/skills3645 repos~904Automated safety check: PassMIT
Codex with ChatGPT Planning LoopXiaoDuoYa/codex-with-chatgpt7.1k—~11kAutomated safety check: NotesMIT
Agentic Tool Integrationsamugit83/redamon3k—~1.3kAutomated safety check: PassMIT

Similar skills

  • Discover

    anombyte93/prd-taskmaster

    Phase 1 of the prd-taskmaster pipeline: brainstorm-driven discovery.

    604 GitHub stars~2.4k tokensUpdated 1 mo ago
    Agent WorkflowsAuto-check passed
  • Handoff

    anombyte93/prd-taskmaster

    Phase 3 of the prd-taskmaster pipeline: smart mode selection and user handoff.

    604 GitHub stars~5k tokensUpdated 1 mo ago
    Agent WorkflowsAuto-check passed
  • Official

    Turn Notion specs into implementation plans, tasks, and progress tracking; use when implementing PRDs/feature specs and creating Notion plans + tasks from them.

    364 GitHub starsUsed in 5 repos~904 tokens
    Agent WorkflowsAuto-check passed
  • Codex with ChatGPT Planning Loop

    XiaoDuoYa/codex-with-chatgpt

    Uses ChatGPT in the browser as the planning and review brain for a Codex session, with Codex keeping all execution and ChatGPT reading the workspace through a bridge.

    7.1k GitHub stars~11k tokensUpdated 7 days ago
    Agent WorkflowsAuto-check: notes
  • Agentic Tool Integration

    samugit83/redamon

    Wiring a new tool the AI agent can call (not the recon pipeline): the tool registry, the phase map, the hardcoded dispatch chokepoint, and the duplicated execution paths that make a tool work in…

    3k GitHub stars~1.3k tokensUpdated today
    Agent WorkflowsAuto-check passed
  • Quick Start

    jpicklyk/task-orchestrator

    Interactive onboarding for the MCP Task Orchestrator. An agent skill from jpicklyk/task-orchestrator.

    207 GitHub stars~4k tokensUpdated today
    Agent WorkflowsAuto-check passed

More from closedloop-ai/claude-plugins

All 41 skills in this repo
  • Codex Review

    closedloop-ai/claude-plugins

    Run Codex to review a plan file and return structured feedback with a verdict.

    122 GitHub stars~1.4k tokensUpdated today
    Auto-check: notes
  • Critic Cache

    closedloop-ai/claude-plugins

    Check if critic reviews are still valid before re-running Phase 2.5 critics.

    122 GitHub stars~528 tokensUpdated today
    Auto-check: notes
  • Cross Repo Cache

    closedloop-ai/claude-plugins

    Check if cross-repo coordinator results can be reused, avoiding redundant Sonnet agent launches.

    122 GitHub stars~683 tokensUpdated today
    Auto-check: notes
  • Eval Cache

    closedloop-ai/claude-plugins

    Check for a cached plan-evaluation.json result before launching the plan-evaluator agent.

    122 GitHub stars~516 tokensUpdated today
    Auto-check: notes
  • Find Plugin File

    closedloop-ai/claude-plugins

    This skill should be used when needing to locate files within the Claude Code plugins cache directory (~/.claude/plugins/cache).

    122 GitHub stars~812 tokensUpdated today
    Auto-check passed
  • Gh Monitor PR

    closedloop-ai/claude-plugins

    Start a detached GitHub pull-request monitor that wakes the exact launching Codex Desktop or CLI root through the managed Codex App Server when review, CI, conflict, merge-queue, closure, readiness…

    122 GitHub stars~5.1k tokensUpdated today
    Auto-check passed

Questions about Upload Artifact

What does Upload Artifact do?

Upload a file as a ClosedLoop document (PRD, implementation plan, feature, or template). Upload Artifact is an agent skill from closedloop-ai/claude-plugins. Upload a file as a ClosedLoop document (PRD, implementation plan, feature, or template).

When should I use Upload Artifact?

Upload Artifact fits situations like: : upload artifact; upload implementation plan; create artifact from file; save as artifact.

How do I install Upload Artifact in Claude Code?

Run `npx skills add closedloop-ai/claude-plugins --skill upload-artifact -a claude-code`. Or copy the skill folder (plugins/platform/skills/upload-artifact in closedloop-ai/claude-plugins) into .claude/skills/upload-artifact in your project. Claude Code loads it when a task matches its description.

How do I install Upload Artifact in Codex?

Run `npx skills add closedloop-ai/claude-plugins --skill upload-artifact -a codex`. Or copy the skill folder (plugins/platform/skills/upload-artifact in closedloop-ai/claude-plugins) into .agents/skills/upload-artifact in your project. Codex loads it when a task matches its description.

Can I use Upload Artifact in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add closedloop-ai/claude-plugins --skill upload-artifact -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/upload-artifact, .gemini/skills/upload-artifact, .github/skills/upload-artifact and .opencode/skills/upload-artifact in your project.

What does Upload Artifact need to run?

Going by SKILL.md and its folder, Upload Artifact needs Python for the scripts in its folder, the command-line tools its instructions call (uv) and credentials named CLOSEDLOOP_API_KEY. Our summary lists: Python 3; A credential in CLOSEDLOOP_API_KEY. Its frontmatter pre-approves these tools: Bash, Read, AskUserQuestion, mcp__closedloop__create-document, mcp__closedloop__create-document-version, mcp__closedloop__list-projects.

Does Upload Artifact access the network?

SKILL.md contains no URLs. Its commands use uv, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Upload Artifact safe to install?

Our automated static check of SKILL.md found notes only (mentions a .env file; pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Upload Artifact use?

Upload Artifact is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Upload Artifact use?

About 1.4k tokens (SKILL.md is roughly 5.5k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Upload Artifact?

Skills that share tags, products or a category with Upload Artifact: Discover (anombyte93/prd-taskmaster, 604 stars), Handoff (anombyte93/prd-taskmaster, 604 stars), Notion Spec To Implementation (JetBrains/skills, 364 stars) and Codex with ChatGPT Planning Loop (XiaoDuoYa/codex-with-chatgpt, 7.1k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Upload Artifact?

closedloop-ai (a GitHub organization) maintains it in closedloop-ai/claude-plugins, which has 122 GitHub stars. The repository holds 41 skills in this directory. The repository was last updated on October 7, 2026.

Source: closedloop-ai/claude-plugins on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.