problem-workspace
Skill0 starsChanged 27 days agoMITView on GitHub
Use when creating, finding, importing documents (interviews, notes, exports) into, checking the status of or progress on ("where are we on this initiative?"), or repairing a problem-work folder (workspace.md manifest, cards, backlog). Not for capturing vision, objectives or strategy — use strategic-context.
In this repository15 other files it gives its agents.
- customer-letterSkill
- define-problemSkill
- opportunity-assessmentSkill
- opportunity-backlogSkill
- opportunity-sizingSkill
- problem-discoverySkill
- problem-evidenceSkill
- problem-focusSkill
- problem-reviewSkill
- problem-statementSkill
- reframe-requestSkill
- strategic-contextSkill
- success-measuresSkill
- team-objectivesSkill
- viability-constraintsSkill
The file
We split this skill into the rules it gives an agent
11 rules. About 0 are common, 5 are distinctive, and 6 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈5
Distinctive · estimate
This author's own choices. Worth a look.
6
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 32
Run every shell command as one simple command per call: no &&, ;, pipes or loops, and no cp -p.
- Very specific: line 36
Look for workspace.md with Glob, ignoring _templates/ copies.
- Distinctive: line 41
When the request is Create, Locate only checks that this initiative does not already have a folder.
- Very specific: line 48
README: If <location>/README.md does not exist, copy _templates/workspace-readme.md to it unchanged.
- Distinctive: line 50
If the request names documents to bring in, run Import now.
- Very specific: line 57
No collision: copy with cp -n <file> <slug>/inputs/ (or cp -rn <folder>/.
- Distinctive: line 60
Do not open, summarise or judge the files.
- Very specific: line 65
Read-only: write nothing. Read workspace.md (stage, mode, updated, the last three decision-log lines) and the front-matter of every …
- Distinctive: line 96
Never write to the plugin's install directory.
- Very specific: line 97
Never overwrite or delete a file.
- Distinctive: line 102
Never name "the most important problem".
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
problem-workspace
Owns the working folder every other problem-definition skill reads and writes: problem-work/<initiative-slug>/. Its Locate procedure is Step 1 of every other skill.
When to use
- Starting an initiative: no
problem-work/folder or manifest yet (Create). - Another skill needs the workspace: they all begin with Locate.
- The user hands over documents to keep with the initiative (Import).
- The user asks where things stand ("where are we on the order desk work?", "what's the status?"): stage and how many problems are in each status (Status). Use this skill even when the request never says "workspace"; answering from a quick look at the files skips the counts and the next step.
- Folders or files are missing, the backlog and the cards disagree, or someone hand-edited a card (Repair).
When not to use
- Capturing vision, objectives, scorecard or strategy: use strategic-context.
- Finding problems in notes or data: use problem-discovery. Import only copies files; it does not read them.
- Changing what a card says or what status a problem should have. The skill that owns that decision does it.
Inputs
- Create: an initiative name (required) and, optionally, a location and a mode (
team,leaderormixed). Do not stop to ask for what the request already gives. If mode is not given, useteamand say so in the report. - Import: the files or folders to copy in.
- Locate, Status, Repair: nothing; the workspace is found from the current folder.
Steps
Run every shell command as one simple command per call: no &&, ;, pipes or loops, and no cp -p. List several folders or use a glob instead (mkdir -p a b c, cp src/* dest/). If the shell is unavailable, use Read and Write.
1. Locate
- Look for
workspace.mdwith Glob, ignoring_templates/copies. Search in this order and stop at the first level that has any: the current folder; one level down (*/workspace.mdandproblem-work/*/workspace.md). Never search above the project folder. - One match: that is the workspace. Several: if the request names an initiative, use it; otherwise list them and ask which.
- No match: what happens next depends on what the request brought. Pasted text alone (a statement, a request, an objective or a list typed into the chat, and nothing else): go chat-only at once, without an offer, and say in one line that a workspace can be created on request. Files, a folder, card IDs or an ask to save: say no workspace was found and offer to create one (ask for the initiative name). A decline is chat-only. Chat-only means: the first output line is
> **Chat-only mode:** nothing is being saved., the same content is given in the conversation, and no file or folder is written anywhere. It lasts until the user asks to save or to create a workspace: then run Create and carry on in workspace mode from that reply, writing only what that reply and later ones produce (earlier chat-only output is not written back unless the user asks). - Hand back the workspace path, the manifest's
stageandmode, and whether_templates/exists.
When the request is Create, Locate only checks that this initiative does not already have a folder. If it does, report that workspace and stop. Other initiatives beside it do not block a new one.
Create
- Location. Default:
problem-work/at the root of the user's project folder (${CLAUDE_PROJECT_DIR}in Claude Code, the connected folder in Cowork), or a folder the user names. Never the plugin's install directory. The initiative folder is<location>/<slug>/, where<slug>is the initiative name in lowercase, hyphen-separated ASCII. - Folders. One command:
mkdir -pfor<slug>/inputs,discovery,cards,sizing,assessments,statements,objectivesand_templates. - Templates. Copy every file from
${CLAUDE_PLUGIN_ROOT}/templates/into<slug>/_templates/(onecpwith a glob), so all twelve are there. Later skills start new files from these copies. - README. If
<location>/README.mddoes not exist, copy_templates/workspace-readme.mdto it unchanged. If it exists, leave it. - Manifest. Write
<slug>/workspace.mdfrom_templates/workspace.md: setinitiative,createdandupdated(today, YYYY-MM-DD),mode,stage: foundationandcheckpoints_since_decision: 0; fill the title; list- [Inputs](inputs/)under## Artifacts; set the**Next suggested step:**line tostrategic-context; keep every other line. Creating a workspace is not a decision, so the decision log gets no line. - If the request names documents to bring in, run Import now.
- Report what was created (a short tree), the mode used, and any file not imported.
Import
- Copy, never move: the originals stay where they are. Copy every file whatever its type (Markdown, CSV, images, PDFs); never convert it.
inputs/is write-once, so never overwrite. First Glob<slug>/inputs/(all depths) and compare names with what is being imported.- No collision: copy with
cp -n <file> <slug>/inputs/(orcp -rn <folder>/. <slug>/inputs/for a folder with no collisions).-nrefuses to replace anything, so a missed collision still cannot overwrite. - Collision: do not copy it over the old file. Copy it as
<name>-v2.<ext>(-v3if that exists) with onecp -n <file> <slug>/inputs/<name>-v2.<ext>, and append one line to## Decision loginworkspace.md:- YYYY-MM-DD — revision — inputs/<name> — re-imported as <name>-v2.<ext>; original kept. Also setupdated. - Report each collision (old name, new name). If a copy was skipped by
-n, say so.
- No collision: copy with
- Do not open, summarise or judge the files; reading them is the job of strategic-context and problem-discovery. List each file with its type and say they are copied, not read.
- Report anything that could not be copied and why.
Status
Read-only: write nothing. Read workspace.md (stage, mode, updated, the last three decision-log lines) and the front-matter of every cards/P-*.md.
- State the initiative, stage and last-updated date.
- Give the count for all seven statuses, zeros included, then the total:
candidate N · shortlisted N · chosen N · not-now N · assessed N · framed N · assigned N. Name the IDs under each non-zero status. Count from the cards, not from the backlog or the log. - List what exists (context, sweeps, backlog, statements, objectives) in one line.
- Mention a mismatch, a card that will not parse, or a missing folder in one line each and point to Repair. Do not fix it and do not comment on the substance of the problems.
Repair
Cards are the source of truth for status. Never overwrite or delete; only add what is missing and bring backlog rows into line.
- Folders and templates.
mkdir -pany of the eight folders that are missing. Copy missing templates from${CLAUDE_PLUGIN_ROOT}/templates/into<slug>/_templates/withcp -nand a glob (-nnever replaces an existing copy). If the parent folder is namedproblem-workand has noREADME.md, copy_templates/workspace-readme.mdthere. - Manifest. Missing: write one as in Create (initiative from the folder name, stage from the artifacts present, empty decision log) and say earlier decisions cannot be recovered. Present but missing front-matter keys: add only the missing keys. Present but unparseable: report the parse error and leave it.
- Check each card. Read its front-matter and confirm it parses as YAML (quotes closed, indentation sound),
idmatches the file name, andstatusis one of the seven values. A card that fails is invalid: report the file and the exact problem ("line 3: unclosed quote", "status 'in progress' is not a status") and leave the file byte-identical. Do not guess its status or touch its backlog row. - Reconcile
backlog.md(if it exists; Repair does not create it). For each valid card there must be exactly one row with the same ID and the card's status. Change only the Status cell of a wrong row. Add a missing row using the table's columns,—for blanks. A row with no card, or a duplicate row, is reported, not removed. Never touch## Focus decisions. - Report three lists: fixed, needs you (each invalid card with its error and what to correct by hand; rows without cards), left as they were.
Output
- Create: the folder tree (Create, above) plus
_templates/,README.mdandworkspace.md; imported files ininputs/. - Import: the copied files in
inputs/(new names for collisions) and arevisionline in the decision log for each. - Status: a chat report only.
- Repair: added folders and files, edited Status cells in
backlog.md, and the three-list report. - Every response, including chat-only, ends with a line
**Next suggested step:** <skill or action>, never "Next step" and never a closing question. After Create or Import: strategic-context (or problem-discovery if the user wants to skip strategy; it will flag the missing context). After Status: the manifest's own next-step line, or fromstage(foundation: strategic-context; identify: problem-discovery; choose: problem-focus; define: problem-statement; handoff: team-objectives). When Repair left an invalid card: fix that card by hand, then run problem-workspace Repair again.
References
None. This skill uses templates only: read ${CLAUDE_PLUGIN_ROOT}/templates/ (listed in Create step 3) and keep the workspace copies in _templates/.
Guardrails
- Never write to the plugin's install directory. Plugin content is read-only and replaced on update; every file this skill makes lands in the user's project folder.
- Never overwrite or delete a file. A name collision gets
-v2plus a decision-logrevisionline. Only the Status cells of backlog rows, missing manifest keys,updatedand new decision-log lines ever change in an existing file. - An invalid card or manifest is reported with its parse error, never repaired in place, never guessed at.
- Flag, don't invent: no decision-log lines, statuses, counts or file contents that no file supports. Report counts as read from the cards.
- IDs are stable and never reused:
P-NNN, next ID is the highest ever used plus one; gaps (a merged card) are normal. - Chat-only means no file anywhere, and starts with the notice line.
- Never name "the most important problem"; Status reports counts, not rankings.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

