Agent skill

Review Proposals

by jpicklyk in jpicklyk/task-orchestrator

Triages pending improvement-proposal MCP items — presents each with its scope and evidence, collects an accept/reject/defer decision per proposal, and carries out the disposition: project-scoped…

MITAuto-check passedSales & Support

Install Review Proposals

skills CLI
$ npx skills add jpicklyk/task-orchestrator --skill review-proposals -a claude-code

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

GitHub CLI
$ gh skill install jpicklyk/task-orchestrator review-proposals --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/jpicklyk/task-orchestrator.git skills-src && mkdir -p .claude/skills && cp -r skills-src/claude-plugins/task-orchestrator/skills/review-proposals .claude/skills/review-proposals && 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
review-proposals
GitHub stars
207
Token cost
~4.5k tokens
SKILL.md length
1,889 words
Files
1
Skills in repo
28
Repo updated
First seen
Licence
MIT

At a glance

Triages pending improvement-proposal MCP items — presents each with its scope and evidence, collects an accept/reject/defer decision per proposal, and carries out the disposition: project-scoped…

  • Works in 7 steps: Parse Arguments and Read Config → Discovery → Load Proposal Detail → …
  • A user says: review proposals
  • SKILL.md covers Step 0 — Parse Arguments and…, Step 1 — Discovery, Step 2 — Load Proposal Detail and Step 3 — Present Triage Table, plus 4 more sections
  • Calls gh

What it does

Review Proposals is an agent skill from jpicklyk/task-orchestrator. Triages pending improvement-proposal MCP items — presents each with its scope and evidence, collects an accept/reject/defer decision per proposal, and carries out the disposition: project-scoped acceptances get their exact YAML applied to .taskorchestrator/config.yaml and pushed per-root; global acceptances get a tracked GitHub issue (or dwell in review for the maintainer); rejections are recorded and cancelled; deferrals are recorded and left in queue. Use when a user says: review proposals, triage proposals…

Its SKILL.md is about 4.5k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Sales & Support, covering Proposals and quotes. It works with GitHub and Model Context Protocol. The repository describes itself as: Server-enforced workflow discipline for AI agents. An MCP server providing persistent work items, dependency graphs, quality gates, and actor attribution. Schemas define what… The licence is MIT.

When your agent uses it

  • A user says: review proposals
  • Triage proposals
  • Pending proposals
  • What proposals are open

Example prompts

  • “Use the review-proposals skill to triage pending improvement-proposal MCP items — presents each with its scope and evidence, collects an…”
  • “/review-proposals”

Workflow steps

7 steps, taken from the step headings in SKILL.md.

  1. Parse Arguments and Read Config
  2. Discovery
  3. Load Proposal Detail
  4. Present Triage Table
  5. Collect Decisions
  6. Carry Out Dispositions
  7. Report

What it can do on your machine

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

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • gh

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

  • Network

    No URLs in SKILL.md. Its commands use gh, 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 no API keys, tokens, secrets or passwords.

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

Context cost

Review Proposals loads about 4.5k tokens when it runs. Until then it costs about 163 tokens; SKILL.md has 1,889 words of instructions outside code blocks.

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

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 passed

The automated check found no risky patterns in SKILL.md.

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); files beside SKILL.md are not scanned.

SKILL.md

The full file from jpicklyk/task-orchestrator at commit d2d362a, republished under its MIT licence (© jpicklyk). 1,889 words, ~4,487 tokens.

Download SKILL.mdSave it as .claude/skills/review-proposals/SKILL.md (or your agent's skills folder).
name
review-proposals
description
Triages pending improvement-proposal MCP items — presents each with its scope and evidence, collects an accept/reject/defer decision per proposal, and carries out the disposition: project-scoped acceptances get their exact YAML applied to .taskorchestrator/config.yaml and pushed per-root; global acceptances get a tracked GitHub issue (or dwell in review for the maintainer); rejections are recorded and cancelled; deferrals are recorded and left in queue. Use when a user says: review proposals, triage proposals, pending proposals, what proposals are open, adopt proposals, process improvement proposals, accept or reject proposals.
argument-hint
[optional: proposal UUID | --scope global|project]

Review Proposals

Triages improvement-proposal MCP items created by /session-retrospective when a cross-session trend graduates. Presents pending proposals, collects a per-proposal decision, and carries out the disposition — including applying project-scoped config changes and filing/linking GitHub issues for global changes.

Shared GitHub conventions (issue template, scrub rule, gh guard, dedup procedure) are not duplicated here — see <skill-base-dir>/../session-retrospective/references/github-feedback.md for the full C2/C4/C5 contract and dedup steps referenced throughout Step 5.


Step 0 — Parse Arguments and Read Config

Parse $ARGUMENTS:

  • A UUID → single-proposal mode: skip Step 1 discovery entirely: go straight to Step 2 for that one item.
  • --scope global or --scope project → filter Step 1 discovery to only that scope's query. Absent → run both discovery queries.
  • Neither → full discovery, both scopes.

Read the config file directly (file read, not MCP) — the path on the SessionStart context's Config: line when there is one, otherwise the workspace .taskorchestrator/config.yaml. In personal scope that path is the user-level file; below, "the config file" means whichever file you read here. Read it for:

  • project.rootId / project.name — enables the project-scoped discovery query and per-root push in Step 5. In personal scope the root is the anchor-only personal root: skip the project-scoped discovery query (proposals live in the global container) but a project-scoped acceptance still edits and pushes the user-level file with rootId = the personal root. If absent, project-scoped discovery and project-scoped acceptance are unavailable — proceed with global-only discovery.
  • retrospective.github_feedback.enabled — default false if the block or key is absent.
  • retrospective.github_feedback.repo — default jpicklyk/task-orchestrator if absent.

Step 1 — Discovery

Skip this step entirely in single-proposal mode (UUID argument supplied).

Run both queries in parallel (unless --scope narrows to one):

Global:

query_items(operation="search", query="Improvement Proposals", limit=5)

Find the "Improvement Proposals" container from the result, then:

query_items(operation="overview", anchorId="<container-uuid>", includeChildren=true)

Project-scoped (only if project.rootId is known):

query_items(operation="search", tags="improvement-proposal", ancestorId="<rootId>", limit=50)
Partition results

For each candidate item, classify by role and notes:

  • Pending — role queue, no adoption-decision note yet. The main triage set.
  • Deferred — role queue, has an adoption-decision note whose body starts with "deferred". List in a separate section; do not re-offer for a decision unless the user explicitly asks to revisit deferred proposals, or the stated revisit condition in the note plausibly holds now.
  • Stalled — role work (item was accepted and advanced to work via start but never reached review/terminal — an interrupted or stuck adoption). Flag as stalled adoption; offer to resume (fill remaining notes and complete) or cancel.
  • Terminal — skip; already resolved (accepted-and-verified, rejected, or fully handed off).

If nothing is pending (no queue-role items without an adoption-decision, and no stalled items), report:

No pending improvement proposals.

and stop — do not proceed to later steps.


Step 2 — Load Proposal Detail

For each candidate (pending + stalled; cap at 15 — if more, take the 15 oldest by creation and note the overflow count), fetch notes:

query_notes(operation="list", itemId="<uuid>", includeBody=true)

From the returned notes, extract:

  • Proposal body — the proposal note (or the item's summary if the note is absent).
  • Scope clause — read the scope classification the note states (global vs project-specific). If it cannot be parsed unambiguously, treat as global — this is conservative: never auto-edit a project's config.yaml on an ambiguous scope reading.
  • Existing github-issue: line — the last line of the proposal note body, if present, in the form github-issue: <url>. Carry this forward so Step 5's global-accept path can reuse it instead of filing a duplicate.

Step 3 — Present Triage Table

Render one compact table covering all pending + stalled candidates (deferred proposals get their own short list underneath, not full rows):

| # | ID | Proposal | Scope | Evidence | Age | Issue |
|---|-----|----------|-------|----------|-----|-------|
| 1 | `a1b2c3d4` | Add `session-tracking` maxLength guard | project | 3 sessions, sparse-note trend | 4d | — |
| 2 | `e5f6a7b8` | Nudge cooldown too short for solo dev | global | 2 sessions, friction theme | 1d | #142 |
  • Evidence — a one-line summary of the trend/session count that graduated this proposal (from the proposal body or summary).
  • Age — days since creation.
  • Issue — existing github-issue: link if present, else —.

Below the table, list deferred proposals as a short reminder line each: `<short-id>` — deferred: <condition> (deferred <date>) and stalled proposals as `<short-id>` — stalled in work: <hint>.


Step 4 — Collect Decisions

For each pending/stalled proposal, show the proposed change (the exact YAML the proposal names, or the file + section it targets) and ask via AskUserQuestion:

◆ "<proposal title>"  [scope: project]
  Proposed change:
  <exact YAML or file+section from the proposal note>

  What would you like to do?
  1. Accept — apply this change
  2. Reject — do not adopt, record why
  3. Defer — revisit later, leave in queue
  4. Skip — no decision this round

If the user picks Reject or Defer, either take a one-line reason from their follow-up or offer an "Other" free-text option so the rationale can be recorded verbatim in the adoption-decision note. Skip leaves the item untouched — no note upsert, no advance.


Step 5 — Carry Out Dispositions

Accept — project-scoped
  1. Extract the exact YAML from the proposal note. If the proposal doesn't include ready-to-apply YAML, draft the edit yourself, show it to the user as a diff against the current .taskorchestrator/config.yaml, and confirm via AskUserQuestion before applying anything.
  2. If the proposal targets a different rootId than this workspace's project.rootId: do not edit this workspace's config. Instead, upsert adoption-decision recording that the change must be applied from the owning workspace, and treat the item as deferred (leave it in queue) — do not advance it.
  3. Otherwise, Edit the config file read above (the workspace .taskorchestrator/config.yaml, or the user-level file in personal scope) to apply the change.
  4. Validate before pushing — same bar as manage-schemas' config-format rules (see <skill-base-dir>/../manage-schemas/references/config-format.md):
    • File still parses as valid YAML.
    • Any note role values are limited to queue | work | review.
    • Existing sections are untouched — the edit is additive/targeted, not a rewrite.
  5. Push: manage_project_config(operation="push", rootId="<rootId>", configYaml="<full file content>").
    • On CONFLICT_ERROR: never force blindly. Call manage_project_config(operation="get", rootId="<rootId>"), diff the server's stored config against the local file, and surface the divergence to the user. Only re-push with force: true after explicit user confirmation.
    • A response listing ignoredSections containing retrospective (and other non-honored keys) is expected, not an error — those sections are never resolved server-side. project is honored per-root and will NOT appear in ignoredSections.
  6. Upsert the closure note:
    manage_notes(operation="upsert", notes=[{
      itemId: "<uuid>",
      key: "adoption-decision",
      role: "work",
      body: "accepted — <rationale>. Applied to <config file actually edited> (<section>), pushed per-root <rootId> on <YYYY-MM-DD>."
    }])
  7. Advance with start twice — queue→work, then work→review:
    advance_item(transitions=[{itemId: "<uuid>", trigger: "start"}])
    advance_item(transitions=[{itemId: "<uuid>", trigger: "start"}])
    Do not use complete here — complete jumps straight to terminal and gate-checks required notes across all phases, so it would be blocked by the intentionally-unfilled outcome-verification note. start checks only the current phase's notes (adoption-decision, just filled) and lands in review.
  8. Stop in review — do not advance further. State this explicitly to the user: the item dwells in review with outcome-verification intentionally unfilled — a future /session-retrospective run verifies whether the applied change actually helped, and fills that note then. This is by design, not an oversight.
  9. Apply the Source-trend write-back below — the config change is applied, so the source trend retires now.
Show full SKILL.md (876 more words)Show less
Accept — global
  1. Ensure a GitHub issue exists for the change:
    • If Step 2 found an existing github-issue: line, reuse that URL — no new issue.
    • Else, if retrospective.github_feedback.enabled is true and the gh guard (C5 in the shared reference) passes, file an issue per the C4 template and append the record-back line (C2) to the proposal note.
    • Else, proceed without an issue — say so plainly in the adoption-decision note.
  2. Distinguish install type via:
    gh repo view <repo> --json viewerPermission -q .viewerPermission
    • ADMIN / MAINTAIN / WRITE ⇒ maintainer path. Upsert adoption-decision: "accepted — will implement; tracked in <url>." Advance start twice (queue→work, work→review) — the same dwell-in-review pattern as project-scoped acceptance, with the same complete-would-gate-block caveat; outcome-verification is filled by a later retrospective.
    • Anything else, or gh unavailable ⇒ community handoff (default). Upsert both notes:
      manage_notes(operation="upsert", notes=[
        {
          itemId: "<uuid>",
          key: "adoption-decision",
          role: "work",
          body: "accepted — delegated upstream; tracked in <issue-url>."
        },
        {
          itemId: "<uuid>",
          key: "outcome-verification",
          role: "review",
          body: "delegated upstream — verification happens in <repo> issue #<N>, not this workspace. Verdict: n/a (handed off)."
        }
      ])
      Then advance to terminal in two calls:
      advance_item(transitions=[{itemId: "<uuid>", trigger: "start"}])
      advance_item(transitions=[{itemId: "<uuid>", trigger: "complete"}])
      start enters work; complete then goes straight to terminal — its all-phases note gate passes because proposal, adoption-decision, AND outcome-verification are all filled. The item is now fully terminal — the GitHub issue is the living tracker, not this workspace. Either way, finish with the Source-trend write-back below: community handoff (terminal) retires the source trend now; the maintainer path leaves it active until a later retrospective verifies the landed change.
Reject
manage_notes(operation="upsert", notes=[{
  itemId: "<uuid>",
  key: "adoption-decision",
  role: "work",
  body: "rejected — <reason>. Recorded so future retrospectives do not re-propose."
}])
advance_item(transitions=[{itemId: "<uuid>", trigger: "cancel"}])

cancel is a single gate-free call — it goes straight to terminal from any non-terminal role, no note gate involved. Do not fill outcome-verification for a rejection; there is no change to verify. Then apply the Source-trend write-back below.

Defer
manage_notes(operation="upsert", notes=[{
  itemId: "<uuid>",
  key: "adoption-decision",
  role: "work",
  body: "deferred — revisit when <condition>. Deferred on <YYYY-MM-DD>."
}])

No advance_item call — the item stays in queue. A later Accept decision overwrites this same note via upsert (last-writer-wins), so re-running this skill and accepting a previously-deferred proposal works without any special-casing.

Source-trend write-back

Most proposals graduated from a trend item (tags retrospective-trend, one item per cross-session pattern) whose summary carries GRADUATED -> proposal <short-id>. After carrying out a disposition, close the loop at the source. Everything here uses only gate-free operations (manage_items update, advance_item with cancel) — never start or complete on a trend item — so it is safe under any schema config. Locate the source trend:

query_items(operation="search", query="<proposal-short-id>", scope={tags: ["retrospective-trend"]})

Skip this write-back silently when no trend matches — proposals can also be created ad hoc without a graduating trend.

  • After Reject: append one line to the trend item's summary via manage_items(operation="update"): proposal <short-id> rejected <YYYY-MM-DD> — do not re-graduate; see its adoption-decision note. The trend stays active and keeps accumulating evidence, but every future retrospective now sees the rejection inline in the Step 4.2 listing instead of having to discover the cancelled proposal.
  • After Accept, once the change is actually applied or landed (project-scoped config pushed, or a community-handoff issue filed and the item taken terminal): retire the trend — advance_item(itemId="<trend-uuid>", trigger="cancel", summary="archived: addressed via proposal <short-id>"). When adoption is only tracked so far (maintainer path dwelling in review awaiting implementation), leave the trend active — the later retrospective that fills outcome-verification retires it once the change demonstrably held.
  • After Defer: no trend write-back.

Step 6 — Report

Render a summary table of the run:

## Proposal Review — <YYYY-MM-DD>

| ID | Proposal | Disposition | Action |
|----|----------|-------------|--------|
| `a1b2c3d4` | Add maxLength guard | Accepted | pushed .taskorchestrator/config.yaml (work_item_schemas), dwelling in review |
| `e5f6a7b8` | Nudge cooldown | Accepted (global) | filed https://github.com/jpicklyk/task-orchestrator/issues/143, terminal |
| `c9d0e1f2` | Rename note key | Rejected | cancelled — duplicate of existing key |
| `f3a4b5c6` | Widen skill pointer | Deferred | revisit when trait usage grows |

Close with a reminder: accepted items dwelling in review are not stuck — their outcome-verification note is filled by a future /session-retrospective run once the applied change has had a chance to show effect.


Troubleshooting

gh unavailable or unauthenticated

Cause: gh auth status failed (not installed, not logged in, or network issue) — see the C5 guard in <skill-base-dir>/../session-retrospective/references/github-feedback.md.

Solution: For global acceptances, proceed without filing an issue and say so in the adoption-decision note ("accepted — no GitHub issue filed (gh unavailable)."). This never blocks the disposition — filing is best-effort. The user can file the issue manually later and record the URL back onto the proposal note themselves.


CONFLICT_ERROR on manage_project_config push

Cause: The stored per-root config's fingerprint has moved since this workspace last read it — someone else (another session, manage-schemas, or quick-start) pushed a newer version.

Solution: Never force blindly. Call manage_project_config(operation="get", rootId="<rootId>"), diff the returned configYaml against the local file, and show the user exactly what differs. Only retry with force: true after the user explicitly confirms which version should win — a blind force can silently revert someone else's concurrent change.


Proposal has no exact YAML to apply

Cause: The proposal body describes the change in prose only (common for proposals that predate a YAML-inclusion convention, or for changes that aren't schema edits — e.g., a skill wording tweak).

Solution: Draft the edit yourself from the proposal's description, show it to the user as a diff before touching any file, and get explicit confirmation via AskUserQuestion before applying. Do not guess silently and push.


Proposal targets a different workspace's rootId

Cause: The proposal's stated scope names a project root UUID that doesn't match this workspace's project.rootId — the proposal was likely created while working in a different project sharing the same MCP database.

Solution: Do not edit this workspace's .taskorchestrator/config.yaml. Record in the adoption-decision note that the change must be applied from the owning workspace (name the rootId if known), and treat the proposal as deferred — leave it in queue rather than advancing it, since no action was actually taken here.

© jpicklyk, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in claude-plugins/task-orchestrator/skills/review-proposals of jpicklyk/task-orchestrator.

Open the folder on GitHubat commit d2d362a

Compare with similar skills

Review Proposals 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.

Review Proposals compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Review Proposals this skilljpicklyk/task-orchestrator207—~4.5kAutomated safety check: PassMIT
Issue PrioritizerLeoYeAI/openclaw-master-skills2.2k—~3.9kAutomated safety check: PassMIT
GitHub Voicetobihagemann/turbo408—~1.3kAutomated safety check: PassMIT
ComposioComposioHQ/composio30k1 repos~1.7kAutomated safety check: PassMIT
Rea Changelog Updatemorluto/rea80k—~1.9kAutomated safety check: PassMIT
Skill Seekers Builderyusufkaraaslan/Skill_Seekers15k—~760Automated safety check: PassMIT

Similar skills

  • Issue Prioritizer

    LeoYeAI/openclaw-master-skills

    Prioritize GitHub issues by ROI, solution sanity, and architectural impact.

    2.2k GitHub stars~3.9k tokensUpdated 2 mo ago
    Sales & SupportAuto-check passed
  • GitHub Voice

    tobihagemann/turbo

    Shared writing style rules for GitHub-facing output (PR comments, PR descriptions, PR titles, issues, design proposals).

    408 GitHub stars~1.3k tokensUpdated 2 days ago
    Writing & ContentAuto-check passed
  • Composio

    ComposioHQ/composio

    Route and complete Composio work across Composio For You and Composio Platform.

    30k GitHub starsUsed in 1 repo~1.7k tokens
    Productivity & AutomationAuto-check passed
  • Prepare or rewrite REA release changelogs and GitHub release notes from pinned Git history, with verified contributor thanks and Release Please synchronization.

    80k GitHub stars~1.9k tokensUpdated today
    DevelopmentAuto-check passed
  • Skill Seekers Builder

    yusufkaraaslan/Skill_Seekers

    Detects the type of a knowledge source and uses the Skill Seekers MCP tools to turn docs, repos, PDFs or videos into packaged AI skills.

    15k GitHub stars~760 tokensUpdated 10 days ago
    Agent WorkflowsAuto-check passed
  • Graphify

    EBISPOT/ols4

    A skill your agent uses for any question about a codebase, its architecture, file relationships, or project content — especially when graphify-out/ exists, where the question should be treated as a…

    105 GitHub starsUsed in 6 repos~9.5k tokens
    Knowledge ManagementAuto-check passed

More from jpicklyk/task-orchestrator

All 28 skills in this repo
  • Task Orchestrator Server Setup

    jpicklyk/task-orchestrator

    Walks through how to launch and reach the MCP Task Orchestrator server container: transport, REST API, port publishing, config mounts and config-sync.

    208 GitHub stars~3.1k tokensUpdated today
    Auto-check passed
  • Run Wave

    jpicklyk/task-orchestrator

    Resolves ready MCP work items into a run plan, shows it to you, then executes it through the Workflow tool or direct subagent dispatch, with post-run verification.

    208 GitHub stars~5k tokensUpdated today
    Auto-check passed
  • Adopt Project Scope Migration

    jpicklyk/task-orchestrator

    Migrates an existing unscoped Task Orchestrator database to the project-scoping convention in place, creating one project anchor root and re-parenting work trees under it after a mandatory dry run.

    208 GitHub stars~3.7k tokensUpdated today
    Auto-check passed
  • Bulk Task Completion

    jpicklyk/task-orchestrator

    Completes or cancels a whole feature subtree, a named list of items, or a batch of stale work items at once, previewing the impact and warning before force-completing anything active.

    208 GitHub stars~2.6k tokensUpdated today
    Auto-check passed
  • Task Orchestrator Item Creator

    jpicklyk/task-orchestrator

    Creates an MCP work item from conversation context, anchoring it under the right container, inferring type and priority and pre-filling the required notes.

    208 GitHub stars~4k tokensUpdated today
    Auto-check passed
  • Work Item Dependency Manager

    jpicklyk/task-orchestrator

    Views, creates, deletes and diagnoses BLOCKS, IS_BLOCKED_BY and RELATES_TO links between MCP work items, including why an item cannot start.

    208 GitHub stars~3.5k tokensUpdated today
    Auto-check passed

Categories

Questions about Review Proposals

What does Review Proposals do?

Triages pending improvement-proposal MCP items — presents each with its scope and evidence, collects an accept/reject/defer decision per proposal, and carries out the disposition: project-scoped…. Review Proposals is an agent skill from jpicklyk/task-orchestrator.yaml and pushed per-root; global acceptances get a tracked GitHub issue (or dwell in review for the maintainer); rejections are recorded and cancelled; deferrals are recorded and left in queue.

When should I use Review Proposals?

Review Proposals fits situations like: A user says: review proposals; triage proposals; pending proposals; what proposals are open.

How do I install Review Proposals in Claude Code?

Run `npx skills add jpicklyk/task-orchestrator --skill review-proposals -a claude-code`. Or copy the skill folder (claude-plugins/task-orchestrator/skills/review-proposals in jpicklyk/task-orchestrator) into .claude/skills/review-proposals in your project. Claude Code loads it when a task matches its description.

How do I install Review Proposals in Codex?

Run `npx skills add jpicklyk/task-orchestrator --skill review-proposals -a codex`. Or copy the skill folder (claude-plugins/task-orchestrator/skills/review-proposals in jpicklyk/task-orchestrator) into .agents/skills/review-proposals in your project. Codex loads it when a task matches its description.

Can I use Review Proposals 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 jpicklyk/task-orchestrator --skill review-proposals -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/review-proposals, .gemini/skills/review-proposals, .github/skills/review-proposals and .opencode/skills/review-proposals in your project.

What does Review Proposals need to run?

Going by SKILL.md and its folder, Review Proposals needs the command-line tools its instructions call (gh).

Does Review Proposals access the network?

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

Is Review Proposals safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Review Proposals use?

Review Proposals is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Review Proposals use?

About 4.5k tokens (SKILL.md is roughly 18k 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 Review Proposals?

Skills that share tags, products or a category with Review Proposals: Issue Prioritizer (LeoYeAI/openclaw-master-skills, 2.2k stars), GitHub Voice (tobihagemann/turbo, 408 stars), Composio (ComposioHQ/composio, 30k stars) and Rea Changelog Update (morluto/rea, 80k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Review Proposals?

jpicklyk (a GitHub user) maintains it in jpicklyk/task-orchestrator, which has 207 GitHub stars. The repository holds 28 skills in this directory. The repository was last updated on October 9, 2026.

Source: jpicklyk/task-orchestrator on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.