PostPlus Workspace
Turn one resolved project folder into the durable context and control surface for
repeated PostPlus work. Use postplus-shared first for shared public rules,
source-of-truth guidance, work-folder handling, and local dependency handling.
This skill owns workspace orchestration. Specialist PostPlus skills own domain
judgment. The current PostPlus CLI and server own schemas, validation, cost,
permissions, and provider execution.
Core Contract
- Read the workspace before acting.
- Keep confirmed facts, approved claims, research findings, hypotheses,
defaults, unknowns, and forbidden content distinct.
- Never invent product facts, prices, offers, identities, references,
permissions, approvals, or results.
- Ask only when missing or conflicting information changes truth, strategy,
identity, execution, compliance, spend, or publishing.
- Make reversible low-risk production choices without asking.
- Discover current PostPlus capabilities by catalog and CLI schema instead of
maintaining a hard-coded skill inventory.
- Require explicit approval before changing approved truth, approving a test
plan, spending credits, launching, publishing, or changing live ads.
- Return durable results and decisions to the workspace.
Route
| Request |
Route |
| Start a PostPlus project folder |
Initialize workspace |
| Start a campaign or test cycle |
Initialize campaign |
| Continue an existing project |
Resume workspace |
| Diagnose missing context |
Check the requested stage |
| Research, strategy, testing, or production |
Read stage context, then route to the current specialist skill |
| Quote, launch, publish, or change spend |
Validate with the current CLI, then obtain explicit approval |
| Analyze performance |
Record observations, conclusions, scope, and next hypothesis |
Initialize Workspace
- Resolve the exact target folder and inspect existing files.
- Run
postplus doctor --skill postplus-workspace --json. Follow
postplus-shared if the Python 3 dependency is missing.
- Resolve this installed skill directory and run:
<python-3-command> <skill-directory>/scripts/workspace.py init \
--target <folder> --project "<project name>" \
[--brand "<brand>"] [--product "<product>"] \
[--market "<market>"] [--platform "<platform>"] \
--output <folder>/.postplus/workspace-init.json
Pass only user-supplied or reliably sourced values. The entrypoint creates
missing files only and rejects filesystem roots, the user home directory, and
installed skill directories.
Read existing source materials, fill only confirmed information, preserve
UNKNOWN, then run the onboarding check.
Initialize Campaign
Run:
<python-3-command> <skill-directory>/scripts/workspace.py new-campaign \
--target <workspace> --name "<campaign name>" [--slug <campaign-slug>] \
--output <workspace>/.postplus/campaign-init.json
Fill the objective, market, platform, offer, CTA, KPI, constraints, and approval
state. Set current_campaign in project.yaml only after confirming the
intended campaign.
Resume And Execute
- Find the nearest
project.yaml at or above the working directory.
- Read the nearest applicable
AGENTS.md, then project.yaml.
- Read only the stage context listed in
context-schema.md.
- Run the workspace stage check before high-impact execution.
- Read the selected specialist skill completely.
- Read current CLI help or schema immediately before CLI execution.
- Continue from recorded state instead of recreating prior work.
If no workspace exists, offer initialization. Do not scatter project files into
an unrelated folder.
Stage Rules
Follow stage-gates.md for onboarding, research,
strategy, test, production, launch, and learning requirements. The bundled
checker validates workspace files only; current quotes, provider validation,
permissions, accounts, and live state remain authoritative at the CLI or server
boundary.
Read uncertainty-policy.md when information
is missing, conflicting, or a repair could change meaning.
Check Workspace
<python-3-command> <skill-directory>/scripts/workspace.py check \
--target <workspace> \
--stage <onboarding|research|strategy|test|production|launch|learn> \
[--campaign <campaign-slug>] \
--output <workspace>/.postplus/stage-check.json
Treat BLOCKED as a stop for the affected stage. A local READY result does
not replace current CLI validation, quote confirmation, or launch approval.
Status
End substantive tasks with:
STAGE: <stage>
STATUS: READY | BLOCKED | NEEDS_APPROVAL | COMPLETED
INPUTS READ: <sources>
BLOCKERS: <none or exact blockers>
OUTPUTS: <created or updated artifacts>
NEXT: <one next action>
Resources
- context-schema.md: ownership and loading rules
- stage-gates.md: stage and approval gates
- uncertainty-policy.md: ask, assume, and repair boundaries
assets/project-template/: workspace and campaign templates
scripts/workspace.py: non-destructive initialization and local stage checks
1---2name: postplus-workspace3description: Initialize and operate a durable local PostPlus creative workspace across product onboarding, research, strategy, test planning, production, launch, and learning. Use when starting or resuming a PostPlus project folder, checking stage readiness, maintaining approved product and campaign context, or routing repeated work through current PostPlus skills and CLI capabilities.4---56# PostPlus Workspace78Turn one resolved project folder into the durable context and control surface for9repeated PostPlus work. Use `postplus-shared` first for shared public rules,10source-of-truth guidance, work-folder handling, and local dependency handling.11This skill owns workspace orchestration. Specialist PostPlus skills own domain12judgment. The current PostPlus CLI and server own schemas, validation, cost,13permissions, and provider execution.1415## Core Contract16171. Read the workspace before acting.182. Keep confirmed facts, approved claims, research findings, hypotheses,19 defaults, unknowns, and forbidden content distinct.203. Never invent product facts, prices, offers, identities, references,21 permissions, approvals, or results.224. Ask only when missing or conflicting information changes truth, strategy,23 identity, execution, compliance, spend, or publishing.245. Make reversible low-risk production choices without asking.256. Discover current PostPlus capabilities by catalog and CLI schema instead of26 maintaining a hard-coded skill inventory.277. Require explicit approval before changing approved truth, approving a test28 plan, spending credits, launching, publishing, or changing live ads.298. Return durable results and decisions to the workspace.3031## Route3233| Request | Route |34| --- | --- |35| Start a PostPlus project folder | Initialize workspace |36| Start a campaign or test cycle | Initialize campaign |37| Continue an existing project | Resume workspace |38| Diagnose missing context | Check the requested stage |39| Research, strategy, testing, or production | Read stage context, then route to the current specialist skill |40| Quote, launch, publish, or change spend | Validate with the current CLI, then obtain explicit approval |41| Analyze performance | Record observations, conclusions, scope, and next hypothesis |4243## Initialize Workspace44451. Resolve the exact target folder and inspect existing files.462. Run `postplus doctor --skill postplus-workspace --json`. Follow47 `postplus-shared` if the Python 3 dependency is missing.483. Resolve this installed skill directory and run:4950```text51<python-3-command> <skill-directory>/scripts/workspace.py init \52 --target <folder> --project "<project name>" \53 [--brand "<brand>"] [--product "<product>"] \54 [--market "<market>"] [--platform "<platform>"] \55 --output <folder>/.postplus/workspace-init.json56```5758Pass only user-supplied or reliably sourced values. The entrypoint creates59missing files only and rejects filesystem roots, the user home directory, and60installed skill directories.6162Read existing source materials, fill only confirmed information, preserve63`UNKNOWN`, then run the onboarding check.6465## Initialize Campaign6667Run:6869```text70<python-3-command> <skill-directory>/scripts/workspace.py new-campaign \71 --target <workspace> --name "<campaign name>" [--slug <campaign-slug>] \72 --output <workspace>/.postplus/campaign-init.json73```7475Fill the objective, market, platform, offer, CTA, KPI, constraints, and approval76state. Set `current_campaign` in `project.yaml` only after confirming the77intended campaign.7879## Resume And Execute80811. Find the nearest `project.yaml` at or above the working directory.822. Read the nearest applicable `AGENTS.md`, then `project.yaml`.833. Read only the stage context listed in84 [context-schema.md](references/context-schema.md).854. Run the workspace stage check before high-impact execution.865. Read the selected specialist skill completely.876. Read current CLI help or schema immediately before CLI execution.887. Continue from recorded state instead of recreating prior work.8990If no workspace exists, offer initialization. Do not scatter project files into91an unrelated folder.9293## Stage Rules9495Follow [stage-gates.md](references/stage-gates.md) for onboarding, research,96strategy, test, production, launch, and learning requirements. The bundled97checker validates workspace files only; current quotes, provider validation,98permissions, accounts, and live state remain authoritative at the CLI or server99boundary.100101Read [uncertainty-policy.md](references/uncertainty-policy.md) when information102is missing, conflicting, or a repair could change meaning.103104## Check Workspace105106```text107<python-3-command> <skill-directory>/scripts/workspace.py check \108 --target <workspace> \109 --stage <onboarding|research|strategy|test|production|launch|learn> \110 [--campaign <campaign-slug>] \111 --output <workspace>/.postplus/stage-check.json112```113114Treat `BLOCKED` as a stop for the affected stage. A local `READY` result does115not replace current CLI validation, quote confirmation, or launch approval.116117## Status118119End substantive tasks with:120121```text122STAGE: <stage>123STATUS: READY | BLOCKED | NEEDS_APPROVAL | COMPLETED124INPUTS READ: <sources>125BLOCKERS: <none or exact blockers>126OUTPUTS: <created or updated artifacts>127NEXT: <one next action>128```129130## Resources131132- [context-schema.md](references/context-schema.md): ownership and loading rules133- [stage-gates.md](references/stage-gates.md): stage and approval gates134- [uncertainty-policy.md](references/uncertainty-policy.md): ask, assume, and repair boundaries135- `assets/project-template/`: workspace and campaign templates136- `scripts/workspace.py`: non-destructive initialization and local stage checks