Manage Schemas logo

Manage Schemas

Community
jpicklyk
manage-schemas

Creates, views, edits, deletes, and validates note schemas for the MCP Task Orchestrator in .taskorchestrator/config.yaml — the templates that define which notes agents must fill at each workflow phase. Also recommends schema designs from a library of workflow patterns (autonomous coding loops, spec-driven teams, research pipelines, content production, support triage, data pipelines, incident response, document review) — use this skill whenever the user describes a workflow they want tracked or gated, even without the word 'schema': what schema should I use, help me design schemas, recommend gates for X, set up schemas for my team/workflow/pipeline. Also manages the actor_authentication config block: set actor authentication policy, configure degraded mode, show actor_authentication config, set degradedModePolicy to reject, what's the current degraded mode policy. Use when user says: create schema, show schemas, edit schema, delete schema, validate config, what schemas exist, add a note to schema, remove note from schema, or configure gates.

Overview

Publisherjpicklyk
Repositorytask-orchestrator
Skill namemanage-schemas
Stars
204
Forks
22
Bundled files
18
LicenseMIT
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • 18 bundled files

    Scripts, templates, and references the model can read while it works. Files are read-only and never executed.

  • Open source

    Published by jpicklyk on GitHub. Read the source before you install it.

Installation

Install the Manage Schemas AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/jpicklyk/task-orchestrator.git /tmp/task-orchestrator
mkdir -p .claude/skills
cp -r /tmp/task-orchestrator/claude-plugins/task-orchestrator/skills/manage-schemas .claude/skills/manage-schemas
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Manage Schemas in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Manage Schemas on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Manage Schemas is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

Manage Schemas — Note Schema Lifecycle

Create, view, edit, delete, and validate note schemas in .taskorchestrator/config.yaml. Schemas define which notes agents must fill at each workflow phase before advancing items.


Step 1 — Determine Intent

Classify from $ARGUMENTS and conversation context before making any tool calls.

Signal wordsAction
"create", "build", "new", "add schema", "define", "set up"CREATE
"recommend", "advise", "design", "what schema should I use", "help me choose", a described workflow with no schema nameCREATE (advisor path)
"show", "view", "list", "what schemas", "display"VIEW
"edit", "modify", "change", "update", "add note to", "remove note from"EDIT
"delete", "remove schema", "drop"DELETE
"validate", "check", "verify", "lint"VALIDATE

If $ARGUMENTS contains both an action and a schema name (e.g., "view bug-fix"), extract both. If intent cannot be determined, ask via AskUserQuestion with options: Create, View / Validate, Edit, Delete.

Validate is grouped with View — both are read-only operations on the config file.


Step 2 — Config Bootstrap

Check if .taskorchestrator/config.yaml exists by reading it.

If the file does not exist:

  • For VIEW or VALIDATE: report "No schemas configured — .taskorchestrator/config.yaml does not exist." and stop.
  • For CREATE, EDIT, or DELETE: create the .taskorchestrator/ directory if missing, then create config.yaml with an empty work_item_schemas: key:
    yaml
    work_item_schemas:

If the file exists: Read and parse it. Proceed to Step 3.

Note: project: is a recognized top-level key alongside work_item_schemas, traits, resources, and actor_authentication — it anchors this repo to a project root item and is read only by other skills (quick-start, /adopt-project-scope), never by this skill. Do not treat it as unknown, and never drop or rewrite it — every write operation in Step 3 (CREATE/EDIT/DELETE) must carry it through unchanged. See references/config-format.md → Project Scoping for its fields. (resources: is the optional shared-resource registry — see references/config-format.md → "Resources (Trait Dimension)"; it must be preserved the same way.)


Step 3 — Route to Operation

CREATE — Build a New Schema

Three entry paths: a pattern-driven advisor (the user describes their workflow; classify it against references/workflow-patterns.md and recommend a configuration with per-gate rationale), starter templates, and from-scratch Q&A. All three converge on the same customize → write → smoke-test machinery. When the user described a workflow rather than naming a schema, go straight to the advisor path.

For detailed workflow, see references/create-workflow.md in this skill folder.

VIEW — Display Existing Schemas

Read .taskorchestrator/config.yaml and display schemas in a summary table:

◆ Note Schemas — .taskorchestrator/config.yaml

| Schema Type | Lifecycle | Queue Notes | Work Notes | Review Notes | Total |
|---|---|---|---|---|---|
| feature-implementation | auto | 1 (1 req) | 2 (2 req) | 1 (1 req) | 4 |
| bug-fix | auto | 1 (1 req) | 2 (2 req) | 1 (1 req) | 4 |

If the user specified a schema name, show that schema's full detail: each note with key, role, required, description, guidance, and skill (if set). Also show the schema's lifecycle mode and default_traits (if any).

If the config has a traits: section, show a separate traits summary table:

◆ Traits

| Trait | Notes | Skills |
|---|---|---|
| needs-security-review | security-assessment (review, req) | security-review |
| needs-migration-review | migration-assessment (queue, req) | migration-review |

If the config has an actor_authentication: section, display the actor authentication status including verifier type when present:

◆ Actor authentication: enabled, verifier: noop

Or with a JWKS verifier and its source:

◆ Actor authentication: enabled, verifier: jwks (uri: https://provider.example/.well-known/jwks.json)

Or with DID-trust mode:

◆ Actor authentication: enabled, verifier: jwks (DID trust: did:web:agent.example.com, did:web:lair.dev)

Or ◆ Actor authentication: disabled (or omit if the section is absent). When verifier is absent, default to verifier: noop. When did_allowlist or did_pattern is set, show the DID trust variant.

EDIT — Modify an Existing Schema

Read current config, display the target schema, ask what to change (add note, remove note, toggle required, change description/guidance/skill, change lifecycle mode, add/remove default_traits, rename key), apply changes, write back.

When adding or editing a note, offer the skill field: "Should this note have a skill framework? If so, provide the skill name (e.g., review-quality, or a Claude Code built-in like security-review). The skill will be invoked before the agent fills the note."

If the target schema is not found in config.yaml, inform the user and offer to CREATE instead.

For detailed workflow, see references/edit-workflow.md in this skill folder.

DELETE — Remove a Schema

Read current config, confirm the schema name, warn about orphaned notes on existing items, remove the key, write back.

If the target schema is not found in config.yaml, inform the user and offer to CREATE instead.

For detailed workflow, see references/delete-workflow.md in this skill folder.

VALIDATE — Check Config Integrity

Run structural and semantic checks on the config file and report issues with fix suggestions. In addition to the checks in references/validate-workflow.md, flag any skill: value that is exactly one of review, plan, run, or init as a probable built-in-skill collision (warning, not an error) — these bare names resolve to a Claude Code built-in (e.g. review is the GitHub-PR review skill) rather than a project's intended framework skill. Suggest the likely intended framework skill name (e.g. review-quality instead of review) and cite the exact-name rule in references/config-format.md → "skill — exact-name rule".

For detailed workflow, see references/validate-workflow.md in this skill folder.


Step 4 — Report

For write operations (CREATE, EDIT, DELETE):

  • Show what changed in the config file
  • Sync to server (if project-scoped): Check whether the config has a top-level project.rootId (see Step 2's note and references/config-format.md → Project Scoping). If present, check the tool list for manage_project_config — older servers may not expose it, in which case note this to the user and skip (the config.yaml write above is authoritative locally; the server picks it up on its normal read path once the tool becomes available). If the tool is available, call:
    manage_project_config(operation="push", rootId="<project.rootId>", configYaml="<full current file text>")
    • Success → report the returned fingerprint. Re-pushing identical content later returns the same fingerprint (idempotent) — safe to call after every write without pre-checking.
    • VALIDATION_ERROR → the server rejected the YAML (e.g. a construct its parser can't accept). The local file is already saved — tell the user the parse error from the response and to fix .taskorchestrator/config.yaml, then re-run VALIDATE and retry the push.
    • CONFLICT_ERROR (superseded) → the pushed content is provably older than the server's (its fingerprint is in the server's history but not current). Tell the user to pull/copy the server's config back before editing (manage_project_config(operation="get", ...) shows it), or pass force: true on the push if overwriting the server's newer config is intentional.
    • A warning field on a successful response → relay it to the user as-is (non-fatal — e.g. the root item's type isn't "project").
  • Remind: MCP reconnect required (/mcp) for schema changes to take effect on the global config path — the server caches .taskorchestrator/config.yaml on first access. A successful per-root push above takes effect immediately for items scoped to that root, without needing reconnect.

For VIEW and VALIDATE: The output from Step 3 is the deliverable — no additional report needed.


Troubleshooting

expectedNotes is empty after creating an item with the schema tag

  • Cause: MCP server hasn't loaded the updated config file
  • Solution: Run /mcp in Claude Code to reconnect the server, then retry

Schema not applied — item has no schema

  • Cause: The item's type field doesn't match any key in work_item_schemas, and its tags don't match any note_schemas key (legacy fallback)
  • Resolution order: type field → direct lookup in work_item_schemas; if no type or no match, first tag match in note_schemas; if no match, falls back to default schema if one exists
  • Solution: Verify the item's type and tags with query_items(operation="get", itemId="<uuid>"). Set type to a key that exists in work_item_schemas for reliable schema selection.

Duplicate schema key in config file

  • Cause: YAML allows duplicate keys but only the last one is used
  • Solution: Check for duplicate entries under work_item_schemas: (or note_schemas:) and merge them

Changes not taking effect after editing config

  • Cause: The server caches schemas on first access — changes are not hot-reloaded
  • Solution: Run /mcp to reconnect the MCP server subprocess

Examples

Example 1: View all schemas

User says: "What schemas do I have?"

  1. Read .taskorchestrator/config.yaml
  2. Display summary table with note counts per phase
  3. Offer to show detail for any specific schema

Example 2: Add a required note to an existing schema

User says: "Add a rollout-plan note to the bug-fix schema"

  1. Read config, find bug-fix schema
  2. Ask: which phase (queue/work/review), required?, description, guidance
  3. Append the new note entry, write config back
  4. Remind: /mcp reconnect needed

Example 3: Validate config after manual editing

User says: "I edited the config by hand — check it"

  1. Read and parse config
  2. Run validation checks (syntax, structure, field rules, duplicates)
  3. Report issues or confirm "Config is valid — N schemas, M total notes"

Actor authentication config

The .taskorchestrator/config.yaml file also has an actor_authentication: block:

yaml
actor_authentication:
  degraded_mode_policy: accept-cached  # accept-cached | accept-self-reported | reject
  # ... other actor_authentication settings (enabled, verifier)

When the user wants to view, set, or change degradedModePolicy:

  1. Read .taskorchestrator/config.yaml
  2. Locate the actor_authentication: block (create it if absent)
  3. For view: display the current value (default accept-cached if key is absent)
  4. For changes: update the degraded_mode_policy: field (preserving all other actor_authentication keys)
  5. Validate the new value is one of: accept-cached, accept-self-reported, reject
  6. Write back

Note: If the DEGRADED_MODE_POLICY environment variable is set on the server, it overrides the YAML value. To check whether an override is in effect:

bash
echo $DEGRADED_MODE_POLICY

Tell the user when the env-var override is active — the YAML change will be shadowed until the env var is unset or the server is restarted without it.

Recommended: Use reject for cross-org or multi-tenant fleet deployments where agents from different organizations share a single Task Orchestrator instance. See current/docs/fleet-deployment.md for the full security rationale.

degradedModePolicy values

ValueBehaviorWhen to use
accept-cached(default) Trust JWKS-verified identity from stale cache on UNAVAILABLE; self-reported otherwiseSingle-org; occasional JWKS outages
accept-self-reportedAlways trust the caller-supplied actor.idLocal dev; no JWKS; explicit opt-out
rejectReject any unverified operation (rejected_by_policy)Cross-org did:web fleets; maximum assurance

Bundled files

The model reads these on demand while the skill is loaded. They are exposed as readable files and are never executed.

Frequently asked questions

What does the Manage Schemas AI skill do?

Creates, views, edits, deletes, and validates note schemas for the MCP Task Orchestrator in .taskorchestrator/config.yaml — the templates that define which notes agents must fill at each workflow phase. Also recommends schema designs from a library of workflow patterns (autonomous coding loops, spec-driven teams, research pipelines, content production, support triage, data pipelines, incident response, document review) — use this skill whenever the user describes a workflow they want tracked or gated, even without the word 'schema': what schema should I use, help me design schemas, recommen...

Why use Manage Schemas on TypingMind?

Because you install it once and use it with any model. Manage Schemas is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Manage Schemas in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/jpicklyk/task-orchestrator/tree/main/claude-plugins/task-orchestrator/skills/manage-schemas. TypingMind reads its SKILL.md and bundles its files and installs it as a skill you can enable per chat.

Which AI models can use Manage Schemas?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Manage Schemas?

As many as you like. As long as a model supports skills, you can use Manage Schemas with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Manage Schemas AI skill free?

Yes. It is published on GitHub by jpicklyk under the MIT license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇