Agent skill

Adopt Project Scope Migration

by jpicklyk in 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.

MITAuto-check passedAgent Workflows

Install Adopt Project Scope Migration

skills CLI
$ npx skills add jpicklyk/task-orchestrator --skill adopt-project-scope -a claude-code

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

GitHub CLI
$ gh skill install jpicklyk/task-orchestrator adopt-project-scope --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/adopt-project-scope .claude/skills/adopt-project-scope && 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
adopt-project-scope
GitHub stars
207
Token cost
~3.7k tokens
SKILL.md length
1,567 words
Files
1
Skills in repo
28
Repo updated
First seen
Licence
MIT

At a glance

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.

  • Works in 6 steps: Parse Arguments → Preflight (abort gates) → Inventory & Classify → …
  • Converting an existing Task Orchestrator database to support multiple projects
  • SKILL.md covers Step 0 — Parse Arguments, Step 1 — Preflight (abort gates), Step 2 — Inventory & Classify and Step 3 — Dry-Run Plan (always…, plus 4 more sections
  • Calls git

What it does

The skill takes a database with many depth-0 roots and no project anchor and converts it to a single type=project root that owns the workspace's work trees, writing that root's UUID back into .taskorchestrator/config.yaml under a project block. Global containers such as retrospectives and observations stay at depth 0, and test artifacts are only flagged for cleanup, never moved or deleted automatically. The only item the skill ever deletes outright is its own throwaway server-probe tree used during preflight checks.

Because the execute step re-parents real items, the skill defaults to a dry run and never mutates the database without explicit confirmation; passing --dry-run forces an early exit after the plan is shown. Preflight checks run as an ordered series of abort gates: it first checks config.yaml for an existing project block and stops if the workspace is already adopted, then searches the database for an existing depth-0 anchor of type project. It explicitly does not merge a second database into this one, consolidate multiple existing anchors, or enforce scoping on the server side, and a brand-new workspace with no unscoped work should use /task-orchestrator:init instead.

When your agent uses it

  • Converting an existing Task Orchestrator database to support multiple projects
  • Creating a project anchor root for a workspace that already has unscoped work trees
  • Previewing what a project-scope migration would change before committing to it

Example prompts

  • “Adopt project scope for this workspace and call the project Billing Service.”
  • “Run a dry run of the project-scope migration so I can see the plan first.”
  • “Migrate this existing Task Orchestrator database to project scoping.”

Requirements

  • An existing Task Orchestrator MCP server and database

Workflow steps

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

  1. Parse Arguments
  2. Preflight (abort gates)
  3. Inventory & Classify
  4. Dry-Run Plan (always shown; --dry-run stops here)
  5. Execute
  6. Verify & Reconcile

What it can do on your machine

Read from SKILL.md and the folder at commit 3e83170. 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:

    • git

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

  • Network

    No URLs in SKILL.md. Its commands use git, 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

Adopt Project Scope Migration loads about 3.7k tokens when it runs. Until then it costs about 114 tokens; SKILL.md has 1,567 words of instructions outside code blocks.

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

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 3e83170, republished under its MIT licence (© jpicklyk). 1,567 words, ~3,737 tokens.

Download SKILL.mdSave it as .claude/skills/adopt-project-scope/SKILL.md (or your agent's skills folder).
name
adopt-project-scope
description
Migrates an already-populated, unscoped Task Orchestrator database in place to the project-scoping convention — creates a project anchor root, re-parents existing work trees under it, and writes rootId back to config.yaml. Use when a user says: adopt project scope, migrate this database to project scoping, make this DB multi-project, project-scope this workspace, adopt existing database, or set up project scoping for an existing DB.
argument-hint
[project name] [--dry-run]

Adopt Project Scope — In-Place Migration to Project Scoping

Take an existing, unscoped database (many depth-0 roots, no project anchor) and migrate it in place to the project-scoping convention: one type=project root that owns the workspace's work trees, with its UUID written back to .taskorchestrator/config.yaml under a project: block. Global containers (retrospectives, observations) stay at depth 0; test artifacts are flagged for cleanup, never moved or deleted.

This is a destructive-by-execution skill: the EXECUTE step re-parents real items. It defaults to a dry run and never mutates anything without an explicit confirmation. The only thing it ever deletes is its own throwaway server-probe tree.

For a fresh workspace with no existing unscoped work, use /task-orchestrator:init instead; this skill is for databases that already hold unscoped work trees.

Non-goals: cross-DB consolidation (merging items from a second database); merging multiple existing project anchors into one; any server-side enforcement of scope. This skill adopts a single workspace's single database.


Step 0 — Parse Arguments

  • Project name — the first non-flag token(s) in $ARGUMENTS. If absent, do not guess; ask for it in Step 3 (the dry-run plan) via AskUserQuestion before any mutation.
  • --dry-run — if present, the skill stops after Step 3 (the plan) and performs zero mutations regardless of confirmation. The dry run is ALSO always rendered before execution even without the flag; the flag only forces an early exit.

Step 1 — Preflight (abort gates)

Run these checks in order. Each abort prints a clear, user-facing reason and stops.

1a — Already adopted?

Read .taskorchestrator/config.yaml. If it contains a project: block with a non-empty rootId:, the workspace is already scoped:

◆ Workspace already adopted — config.yaml already points at project root <rootId>.
  Nothing to do. Use /work-summary to inspect the existing project tree.

Stop. (If the file is missing entirely, that is fine — a fresh unscoped DB has no config project: block. Continue.)

1b — Existing anchor already in the DB?
query_items(operation="search", type="project", depth=0)

(list mode — query omitted, filtering by type and depth.) Drop any result tagged personal-root: a personal root is not a project anchor and must never be adopted as one.

  • No results → continue to 1c.

  • One or more results → do NOT silently create a second anchor. Offer, via AskUserQuestion:

    1. Attach to existing — write the existing anchor's UUID into config.yaml (skip anchor creation in EXECUTE; still re-parent MOVE roots under it) and continue.
    2. Abort — stop and let the user resolve the ambiguity manually.

    If the user picks "attach", record the existing anchor UUID as ANCHOR_ID and note that EXECUTE step (a) is skipped.

1c — Server capability probe (the depth-sweep fix)

Bulk re-parenting is exactly the scenario that a pre-fix server corrupts: on a pre-#219/#220 server, re-parenting a subtree does NOT recompute descendant depths (bug 99a3e642), so this skill would silently leave the moved trees with wrong depths. Verify the fix is deployed with a disposable probe, then delete it.

Build a probe where a grandchild's depth MUST change when a middle node is re-parented deeper:

  1. Create a throwaway root and a two-level branch under it in one call:
    manage_items(operation="create", items=[
      { title: "zzprobe-root",  type: "container", priority: "low" }
    ])
    Capture its UUID as P.
  2. Create the branch (sequential parentage, small tree). manage_items create has no ref/parentRef mechanism (only create_work_tree does), so a sibling's UUID does not exist until its own create call returns — M and G cannot be created in the same batch since G's parentId needs M's real UUID:
    manage_items(operation="create", items=[
      { title: "zzprobe-A",   parentId: P,  priority: "low" }     → capture as A (depth 1)
    ])
    manage_items(operation="create", items=[
      { title: "zzprobe-M",   parentId: P,  priority: "low" }     → capture as M (depth 1, sibling of A)
    ])
    Capture M's returned UUID, then create G referencing it:
    manage_items(operation="create", items=[
      { title: "zzprobe-G",   parentId: "<M's real UUID>",  priority: "low" }     → capture as G (depth 2, child of M)
    ])
  3. Re-parent the middle node M under A (making it deeper):
    manage_items(operation="update", items=[{ itemId: M, parentId: A }])
    Post-fix, M becomes depth 2 and G becomes depth 3.
  4. Read the grandchild's depth and capture it:
    query_items(operation="get", itemId=G)
  5. Delete the probe immediately, before acting on the result — this runs on every path, pass or fail:
    manage_items(operation="delete", itemIds=[P], recursive=true)
  6. Now evaluate the captured depth:
    • depth == 3 → fix is present. Continue.
    • depth == 2 (stale) → abort (probe already deleted):
      ⊘ Server is missing the reparent depth-sweep fix (bug 99a3e642).
        Bulk re-parenting on this server would corrupt subtree depths.
        Upgrade the Task Orchestrator server (PR #219/#220 or later) and retry.

--dry-run skips this probe entirely — no execution will happen, so the capability check is unnecessary and the dry run stays genuinely mutation-free. The probe runs only on the real-execution path, after the user confirms in Step 3.

1d — Config-push capability (tolerant)

manage_project_config may be absent on older servers. Do not probe it destructively here — just remember to attempt the push in EXECUTE step (d) and, if the tool is unavailable, skip it with a note rather than failing the whole adoption. The local config.yaml write (step c) is the source of truth; the server push is a convenience sync.


Step 2 — Inventory & Classify

Full depth-0 census:

query_items(operation="overview", excludeTerminal=false, includeChildren=true, limit=<total>)

If the response reports truncated: true, re-issue with limit set to the reported total so no root is missed.

Classify every depth-0 root into exactly one bucket:

BucketRuleAction
KEEP-GLOBALTitle matches a global container — Session Retrospectives, Improvement Proposals; OR the root itself is tagged/typed agent-observation (these are standalone depth-0 items, each its own root — never children of a container); OR a depth-0 type=project item tagged personal-root (never MOVE it).Stays at depth 0.
MOVEAny work container or work tree (a root with work/queue/review children), and any standalone work item. Everything that is real project work.Re-parented under the new anchor.
CLEANUP-CANDIDATEEvident test artifacts: titles containing probe, smoke, depth-test, zzprobe; or tags matching mtest-*.Flagged only — never moved, never deleted. Recommend /batch-complete.

Ambiguous roots (no clear rule match — e.g., an untagged standalone item that could be work or a stray container): do NOT guess. Collect them and present via AskUserQuestion (multiSelect) asking which should MOVE vs stay KEEP-GLOBAL. Test-artifact-looking items always go to CLEANUP-CANDIDATE without asking.


Show full SKILL.md (692 more words)Show less

Step 3 — Dry-Run Plan (always shown; --dry-run stops here)

Render the full plan before any mutation. Require explicit confirmation to proceed.

◆ Adopt Project Scope — Plan   [project: "<name>"]

| Root | ID | Classification | Action |
|------|----|----------------|--------|
| Auth System | `a1b2c3d4` | MOVE | re-parent under new anchor |
| Payments | `e5f6a7b8` | MOVE | re-parent under new anchor |
| Session Retrospectives | `c9d0e1f2` | KEEP-GLOBAL | stays at depth 0 |
| Improvement Proposals | `13243546` | KEEP-GLOBAL | stays at depth 0 |
| zzprobe-smoke-tree | `5768798a` | CLEANUP-CANDIDATE | flag for /batch-complete (not moved) |

Summary: 2 move · 2 stay global · 1 cleanup candidate
Execution will create a "<name>" project anchor and re-parent 2 tree(s) under it.
  • If the project name is still unknown, ask for it now via AskUserQuestion before showing the final counts.
  • --dry-run: stop here. State plainly: "Dry run — no changes made. Re-run without --dry-run to execute."
  • Otherwise, confirm via AskUserQuestion:
    ◆ Proceed with adoption? This re-parents <N> tree(s) under a new project anchor.
      1. Yes — execute
      2. No — abort, make no changes
    Wait for the answer. Only "Yes" proceeds.

Step 4 — Execute

Perform in this order. Record pre-execution counts first (used by Step 5): the depth-0 root count, the MOVE count, and the KEEP-GLOBAL count from Step 2.

(a) Create the project anchor — skip if attaching to an existing anchor (Step 1b):

manage_items(operation="create", items=[{
  title: "<project name>",
  type: "project",
  summary: "Project anchor — subtree scope for <project name>",
  priority: "low"
}])

Capture the new UUID as ANCHOR_ID.

(b) Batch re-parent the MOVE roots — one call, items array (never a sequential call per root):

manage_items(operation="update", items=[
  { itemId: "<move-root-1>", parentId: ANCHOR_ID },
  { itemId: "<move-root-2>", parentId: ANCHOR_ID },
  ...
])

This relies on the depth-sweep fix verified in Step 1c — each moved subtree's descendant depths and root_id are recomputed server-side.

(c) Write the project: block into config.yaml at the main checkout root (the parent of git rev-parse --path-format=absolute --git-common-dir, so it is correct from a linked worktree; refuse a home directory, as /task-orchestrator:init does) — read-modify-write, preserving ALL existing content:

  • Read the current <main>/.taskorchestrator/config.yaml text (create the file with just the block if it does not exist).
  • Insert this top-level block (surgical insert/append — do NOT regenerate or reformat the rest of the file; leave work_item_schemas:, traits:, actor_authentication:, comments, and formatting byte-for-byte intact):
    yaml
    project:
      rootId: "<ANCHOR_ID>"
      name: "<project name>"
  • If a project: key somehow already exists (it should not — Step 1a would have aborted), update its rootId/name in place rather than adding a duplicate key.

(d) Push the config server-side (tolerant — skip if the tool is absent):

manage_project_config(operation="push", rootId=ANCHOR_ID, configYaml="<full config.yaml text>")
  • A warning field about the root's type is only returned when the anchor's type is not project; since step (a) sets type: "project", none is expected. Report it if present but treat it as non-fatal.
  • If manage_project_config is unavailable on this server, skip this step and note: "Config pushed locally only — server does not support manage_project_config; the local config.yaml is authoritative."

Step 5 — Verify & Reconcile

Confirm the migration landed correctly. On ANY mismatch, report loudly and do NOT auto-rollback (say the remedy explicitly).

  1. Anchored child count — the new anchor's direct children must equal the MOVE count:
    query_items(operation="overview", anchorId=ANCHOR_ID)
    The anchor's direct-child count must equal N move.
  2. Global census — remaining depth-0 roots must reconcile:
    query_items(operation="overview", excludeTerminal=false, limit=<total>)
    Expected depth-0 roots = KEEP-GLOBAL count + 1 (the anchor) + any CLEANUP-CANDIDATE roots left in place (cleanup candidates were flagged, not moved). Confirm the moved roots are no longer at depth 0.
  3. Depth spot-check — pick one moved tree that had a grandchild; confirm the grandchild's depth increased by exactly 1 from its pre-move value (the anchor added one level above the old root):
    query_items(operation="get", itemId="<grandchild-of-a-moved-tree>")

Render a before/after table:

✓ Adoption Complete — "<project name>"  (anchor `<8-char-id>`)

|                     | Before | After |
|---------------------|--------|-------|
| Depth-0 roots       | 5      | 4     |
| Under project anchor| 0      | 2     |
| Global containers   | 2      | 2     |
| Cleanup candidates  | 1      | 1 (flagged, not moved) |

↳ Config: project.rootId written to .taskorchestrator/config.yaml
↳ Server push: applied | skipped (tool absent)
↳ Cleanup candidates flagged for /batch-complete: <titles>

On mismatch (e.g., anchored child count ≠ MOVE count):

⚠ Reconciliation mismatch — expected <X> children under the anchor, found <Y>.
  No rollback was performed. To undo: re-parent the affected roots back to depth 0
  with manage_items(operation="update", items=[{ itemId, parentId: null }]) for each,
  then delete the anchor. Investigate before retrying.

Finish by seeding the bundled process rules for the new anchor: run /task-orchestrator:init (a re-run is idempotent and resumes at rule seeding), or rely on the next session's config-sync.

Remind the user that schema changes / new config require an MCP reconnect (/mcp) to take effect if they rely on per-root schema resolution immediately.


Safety Summary

  • Default dry run. No mutation without an explicit AskUserQuestion "Yes".
  • Never deletes user data. Cleanup candidates are only flagged; the sole deletion is the throwaway server probe in Step 1c.
  • Never regenerates config.yaml. The project: block is surgically inserted; all other content is preserved verbatim.
  • Abort, don't corrupt. A pre-fix server (missing the depth-sweep) aborts in preflight rather than silently corrupting subtree depths.
  • No auto-rollback. On verify mismatch, the skill reports the manual remedy rather than guessing at an undo.

Verification (before first real run)

Per the specification, exercise the skill against a COPY of a production-shaped DB:

  1. Dry run on the copy must produce zero mutations and a correct classification table.
  2. Execute on the copy and confirm Step 5 count reconciliation passes (depth-0 roots, anchored children, grandchild depth +1).

Only after the copy passes should the skill be run against the real database.

© 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/adopt-project-scope of jpicklyk/task-orchestrator.

Open the folder on GitHubat commit 3e83170

Compare with similar skills

Adopt Project Scope Migration 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.

Adopt Project Scope Migration compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Adopt Project Scope Migration this skilljpicklyk/task-orchestrator207—~3.7kAutomated safety check: PassMIT
MemPalace Task HandoffMemPalace/mempalace59k—~1.9kAutomated safety check: PassMIT
agtx One-Shot Project Runnerfynnfluegge/agtx1.7k—~3.8kAutomated safety check: PassApache-2.0
Agtx Task Sweepfynnfluegge/agtx1.7k—~1.7kAutomated safety check: PassApache-2.0
OMA Multi-Agent Orchestratorfirst-fluke/oh-my-agent1.3k—~3.1kAutomated safety check: PassMIT
Long Horizon ExecutionRoboClaw-Robotics/RoboClaw166—~1.9kAutomated safety check: PassNone

Similar skills

  • MemPalace Task Handoff

    MemPalace/mempalace

    Creates, hands off, claims, executes and closes agent tasks through the MemPalace logstream, with approval of the exact task before it is recorded.

    59k GitHub stars~1.9k tokensUpdated today
    Agent WorkflowsAuto-check passed
  • Runs a whole project unattended on an agtx kanban board, decomposing the goal, starting tasks, unblocking workers and merging each result.

    1.7k GitHub stars~3.8k tokensUpdated 6 days ago
    Agent WorkflowsAuto-check passed
  • Agtx Task Sweep

    fynnfluegge/agtx

    Breaks a conversation's results into feature-level tasks and pushes them to the agtx kanban board, where each task gets its own worktree and agent session.

    1.7k GitHub stars~1.7k tokensUpdated 6 days ago
    Agent WorkflowsAuto-check passed
  • OMA Multi-Agent Orchestrator

    first-fluke/oh-my-agent

    Splits a complex feature into prioritized tasks, spawns specialist CLI subagents in parallel, tracks them through shared memory and verifies each result.

    1.3k GitHub stars~3.1k tokensUpdated today
    Agent WorkflowsAuto-check passed
  • Long Horizon Execution

    RoboClaw-Robotics/RoboClaw

    Long-horizon robot task execution workflow for multi-step manipulation tasks.

    166 GitHub stars~1.9k tokensUpdated 6 mo ago
    Agent WorkflowsAuto-check passed
  • Monitored Subtask Execution

    RoboClaw-Robotics/RoboClaw

    Monitored single-subtask execution workflow. An agent skill from RoboClaw-Robotics/RoboClaw.

    166 GitHub stars~1.2k tokensUpdated 6 mo ago
    Agent WorkflowsAuto-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.

    207 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.

    207 GitHub stars~4.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.

    207 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.

    207 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.

    207 GitHub stars~3.5k tokensUpdated today
    Auto-check passed
  • Feature Implementation

    jpicklyk/task-orchestrator

    Guides the full lifecycle of a feature-implementation tagged MCP item (the feature container) — from queue through review.

    207 GitHub stars~2.2k tokensUpdated today
    Auto-check passed

Categories

Questions about Adopt Project Scope Migration

What does Adopt Project Scope Migration do?

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. yaml under a project block. Global containers such as retrospectives and observations stay at depth 0, and test artifacts are only flagged for cleanup, never moved or deleted automatically.

When should I use Adopt Project Scope Migration?

Adopt Project Scope Migration fits situations like: converting an existing Task Orchestrator database to support multiple projects; creating a project anchor root for a workspace that already has unscoped work trees; previewing what a project-scope migration would change before committing to it.

How do I install Adopt Project Scope Migration in Claude Code?

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

How do I install Adopt Project Scope Migration in Codex?

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

Can I use Adopt Project Scope Migration 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 adopt-project-scope -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/adopt-project-scope, .gemini/skills/adopt-project-scope, .github/skills/adopt-project-scope and .opencode/skills/adopt-project-scope in your project.

What does Adopt Project Scope Migration need to run?

Going by SKILL.md and its folder, Adopt Project Scope Migration needs the command-line tools its instructions call (git). Our summary lists: An existing Task Orchestrator MCP server and database.

Does Adopt Project Scope Migration access the network?

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

Is Adopt Project Scope Migration 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 Adopt Project Scope Migration use?

Adopt Project Scope Migration 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 Adopt Project Scope Migration use?

About 3.7k tokens (SKILL.md is roughly 15k 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 Adopt Project Scope Migration?

Skills that share tags, products or a category with Adopt Project Scope Migration: MemPalace Task Handoff (MemPalace/mempalace, 59k stars), agtx One-Shot Project Runner (fynnfluegge/agtx, 1.7k stars), Agtx Task Sweep (fynnfluegge/agtx, 1.7k stars) and OMA Multi-Agent Orchestrator (first-fluke/oh-my-agent, 1.3k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Adopt Project Scope Migration?

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 8, 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.