feat: v1.2 ease-of-use pass — session-safe paths, registry-only shortcut, resume guidance

- Remove hardcoded session outputs path; determine per session
- Relabel owner-email constant (was mislabeled "User email")
- Add CW-ID zero-padding rule (CW-007, never CW-7)
- Add quick registry-only update shortcut within Mode 2
- Add resume-after-partial-failure guidance + folder preflight in Mode 1
- Add archive-download fallback via Gitea get_file_contents
- Add targeted-cell registry writes to protect hand-maintained columns
- Add four troubleshooting entries to README

Backwards compatible: registry columns, CW-ID scheme, Wiki V2 format,
and .skill packaging unchanged.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Jason Stedwell
2026-07-04 13:08:42 -05:00
co-authored by Claude Fable 5
parent c77c63e07a
commit d68aa982b3
4 changed files with 43 additions and 6 deletions
+1 -1
View File
@@ -1,6 +1,6 @@
{ {
"name": "cowork-repository-update", "name": "cowork-repository-update",
"version": "1.1", "version": "1.2",
"description": "Manages the full coordination lifecycle for MPM CoWork skills and plugins — concept interviews, folder creation, README writing, Wiki V2 docs, .skill packaging, and registry updates.", "description": "Manages the full coordination lifecycle for MPM CoWork skills and plugins — concept interviews, folder creation, README writing, Wiki V2 docs, .skill packaging, and registry updates.",
"author": "Message Point Media", "author": "Message Point Media",
"keywords": ["coordination", "cowork", "skill", "plugin", "registry", "documentation", "wiki", "gitea", "drive"] "keywords": ["coordination", "cowork", "skill", "plugin", "registry", "documentation", "wiki", "gitea", "drive"]
+6 -1
View File
@@ -2,7 +2,7 @@
CoWork skill that manages the full coordination lifecycle for MPM CoWork skills and plugins. CoWork skill that manages the full coordination lifecycle for MPM CoWork skills and plugins.
**Version:** 1.1 **Version:** 1.2
**Author:** Message Point Media **Author:** Message Point Media
**Repo:** https://git.mpm.to/mpm/cowork-project **Repo:** https://git.mpm.to/mpm/cowork-project
**CoWork Project:** CW-002 — CoWork Repository Update **CoWork Project:** CW-002 — CoWork Repository Update
@@ -168,6 +168,7 @@ This is a skill-only plugin — no server installation required.
| Date | Version | What Changed | | Date | Version | What Changed |
|---|---|---| |---|---|---|
| 2026-07-04 | v1.2 | Ease-of-use pass, no workflow changes: removed hardcoded session outputs path (now determined per session); clarified the owner-email constant (was mislabeled "User email"); added CW-ID zero-padding rule; added quick registry-only update shortcut; added resume-after-partial-failure guidance; added archive-download fallback via Gitea file reads; added targeted-cell registry writes to protect hand-maintained columns. Fully backwards compatible — registry columns, CW-ID scheme, Wiki V2 format, and .skill packaging unchanged. |
| 2026-05-05 | v1.1 | Renamed to CoWork Repository Update. Fixed skill-only .skill packaging: zip must have one top-level folder with SKILL.md at root (not nested under skills/). | | 2026-05-05 | v1.1 | Renamed to CoWork Repository Update. Fixed skill-only .skill packaging: zip must have one top-level folder with SKILL.md at root (not nested under skills/). |
| 2026-05-05 | v1.0 | Initial release. Mode 1 concept interview + Mode 2 document existing build. | | 2026-05-05 | v1.0 | Initial release. Mode 1 concept interview + Mode 2 document existing build. |
@@ -182,3 +183,7 @@ This is a skill-only plugin — no server installation required.
| Wiki doc fails to appear in Shared Drive folder | Use `create_doc` (lands in My Drive) then `update_drive_file` with `add_parents` to move | | Wiki doc fails to appear in Shared Drive folder | Use `create_doc` (lands in My Drive) then `update_drive_file` with `add_parents` to move |
| .skill upload rejected ("Zip must contain exactly one top-level folder") | Stage into `/tmp/[skill-name]-pkg/[skill-name]/`, put SKILL.md directly there, zip the folder | | .skill upload rejected ("Zip must contain exactly one top-level folder") | Stage into `/tmp/[skill-name]-pkg/[skill-name]/`, put SKILL.md directly there, zip the folder |
| Registry row out of order | Read all rows; shift from insertion point downward one row at a time; write new row at correct position | | Registry row out of order | Read all rows; shift from insertion point downward one row at a time; write new row at correct position |
| README in Git shows a base64 blob instead of markdown | Content was double-encoded. Pass plain markdown text to `create_or_update_file` — the Gitea MCP base64-encodes internally. Re-push the plain text to fix. |
| Drive upload fails with "file not found" on `fileUrl` | The path points at the sandbox `/tmp` or a stale session path. Copy the file to the current session's outputs directory and use that host path. |
| Duplicate CW-XXX folder or registry row after a failed run | Don't restart from scratch — search for existing artifacts first, reuse them, and continue from the first missing one (see "Resuming a partial run" in SKILL.md). |
| Registry cells wiped (Chat Space, Odoo Module) after an update | A full-row write overwrote hand-maintained columns. Restore from sheet version history; use targeted range writes for changed cells only. |
+20 -3
View File
@@ -27,13 +27,13 @@ Keep these in context — you will need them for every operation.
| Item | Value | | Item | Value |
|---|---| |---|---|
| User email | `bryan@messagepoint.media` | | Coordination system owner | `bryan@messagepoint.media` (contact for access/permission issues — NOT necessarily the current user) |
| Coordination folder (Drive ID) | `1W-FNW--P2R9jVvoowUXFmSe-sAZoY0GS` | | Coordination folder (Drive ID) | `1W-FNW--P2R9jVvoowUXFmSe-sAZoY0GS` |
| Project Registry (Sheet ID) | `1xN3l3CjhkpXQBo6hS85Qii86fC-yILg6qbxd33cChMA` | | Project Registry (Sheet ID) | `1xN3l3CjhkpXQBo6hS85Qii86fC-yILg6qbxd33cChMA` |
| Registry sheet name | `Project Registry` | | Registry sheet name | `Project Registry` |
| Wiki Template V2 (Doc ID) | `1QySFc6lycK9AOIaiuQFkv9pGiRlm7S9_wgFsrXM4Alo` | | Wiki Template V2 (Doc ID) | `1QySFc6lycK9AOIaiuQFkv9pGiRlm7S9_wgFsrXM4Alo` |
| Git org base URL | `https://git.mpm.to/` | | Git org base URL | `https://git.mpm.to/` |
| Outputs working dir | `/sessions/vigilant-loving-faraday/mnt/outputs/` | | Outputs working dir | The **current session's** outputs directory (e.g. `/sessions/[session-name]/mnt/outputs/` in Cowork, or the session scratchpad in Claude Code). Never reuse a path from a previous session — session mount paths change every session. |
**IMPORTANT — File Writes:** Never write files directly to the Google Drive FUSE mount path. **IMPORTANT — File Writes:** Never write files directly to the Google Drive FUSE mount path.
The mounted path is unreliable and causes deadlock errors. Always use Drive API tools The mounted path is unreliable and causes deadlock errors. Always use Drive API tools
@@ -69,6 +69,9 @@ auto-assign the next available number?"*
- Assign max + 1 as the new ID. - Assign max + 1 as the new ID.
- Do not rely on row count — rows may be out of order or have gaps. - Do not rely on row count — rows may be out of order or have gaps.
**ID formatting:** Always zero-pad to 3 digits — `CW-007`, `CW-042`, `CW-115`. Never write
`CW-7`. Consistent padding keeps sheet sorting and folder names aligned.
**Correct-order registry insertion:** **Correct-order registry insertion:**
When writing a new registry row, read the current registry to find where the new CW-ID When writing a new registry row, read the current registry to find where the new CW-ID
fits numerically. If it belongs in the middle (backfill case), shift all rows from that fits numerically. If it belongs in the middle (backfill case), shift all rows from that
@@ -88,6 +91,18 @@ Determine the mode before doing anything else:
If the context makes it obvious, proceed. If ambiguous, ask: If the context makes it obvious, proceed. If ambiguous, ask:
*"Is this a new concept to capture, or do you have a built plugin/skill you want to document?"* *"Is this a new concept to capture, or do you have a built plugin/skill you want to document?"*
**Quick registry-only update (shortcut within Mode 2):** If the user only wants to change
registry fields for an existing project — e.g. bump the Version, change Status, fix a link,
add a Note — and no artifacts (README, wiki, .skill) need regenerating, skip the full 10-step
process. Just: read the existing registry row, update only the changed fields plus
Last Updated (Q), and confirm. Never rewrite untouched columns.
**Resuming a partial run:** If a previous run failed or was interrupted mid-way, do NOT
restart blindly — that creates duplicate folders, repos, and registry rows. First check what
already exists: search the Coordination folder for a `CW-XXX` folder, check the registry for
the row, check the Drive folder contents for README/wiki/.skill files. Reuse everything that
already exists and continue from the first missing artifact.
--- ---
## Mode 1 — Concept Interview ## Mode 1 — Concept Interview
@@ -118,7 +133,9 @@ Execute these steps in order. Do not skip any.
**Step 1 — Assign CW-ID** (follow CW-ID Assignment rules above) **Step 1 — Assign CW-ID** (follow CW-ID Assignment rules above)
**Step 2 — Create Drive folder** **Step 2 — Create Drive folder**
Use `create_drive_folder` to create `CW-XXX — [Project Name]` inside the Coordination First search the Coordination folder for an existing folder starting with `CW-XXX`if one
exists (e.g. from an earlier interrupted run), reuse it instead of creating a duplicate.
Otherwise use `create_drive_folder` to create `CW-XXX — [Project Name]` inside the Coordination
folder (ID: `1W-FNW--P2R9jVvoowUXFmSe-sAZoY0GS`). Record the new folder ID. folder (ID: `1W-FNW--P2R9jVvoowUXFmSe-sAZoY0GS`). Record the new folder ID.
**Step 3 — Create repo if requested** **Step 3 — Create repo if requested**
@@ -3,6 +3,9 @@
Full step-by-step process for creating or updating coordination artifacts for a Full step-by-step process for creating or updating coordination artifacts for a
built or recently updated CoWork skill, plugin, or tool. built or recently updated CoWork skill, plugin, or tool.
If the user only needs registry fields touched (version bump, status change, link fix),
use the quick registry-only shortcut described in SKILL.md — skip straight to Steps 3, 9, 10.
All three primary artifacts — README.md, Wiki doc, and .plugin file (if applicable) — All three primary artifacts — README.md, Wiki doc, and .plugin file (if applicable) —
MUST be placed inside the CW-XXX Drive folder before the registry row is written. MUST be placed inside the CW-XXX Drive folder before the registry row is written.
Verify each one is in the folder. Do not write the registry row until all artifacts Verify each one is in the folder. Do not write the registry row until all artifacts
@@ -41,6 +44,11 @@ curl -L -o /tmp/plugin-repo.zip "[repo-url]/archive/main.zip"
unzip -o /tmp/plugin-repo.zip -d /tmp/plugin-repo unzip -o /tmp/plugin-repo.zip -d /tmp/plugin-repo
``` ```
**If the archive download fails** (network restriction, auth, or empty repo): fall back to
reading files individually via the Gitea MCP `get_file_contents` tool — start with
`.claude-plugin/plugin.json` and `skills/*/SKILL.md`, then any `references/` files it mentions.
Slower, but produces the same metadata.
Read and record: Read and record:
- `.claude-plugin/plugin.json` → name, version, description, author, keywords - `.claude-plugin/plugin.json` → name, version, description, author, keywords
- `.mcp.json` → server name, command, required env vars (if present — omit for skill-only) - `.mcp.json` → server name, command, required env vars (if present — omit for skill-only)
@@ -236,7 +244,9 @@ Use `create_drive_file` with:
- `fileUrl`: `file:///[outputs-path]/[skill-name]-v[version].skill` - `fileUrl`: `file:///[outputs-path]/[skill-name]-v[version].skill`
Note: The Drive API server runs on the host, not the sandbox. Copy the file from `/tmp` Note: The Drive API server runs on the host, not the sandbox. Copy the file from `/tmp`
to the outputs directory first, then reference it via the host path (not the VM `/tmp` path). to the **current session's** outputs directory first, then reference it via the host path
(not the VM `/tmp` path). The outputs path is session-specific — determine it fresh each
session; never reuse a path remembered from a previous session.
If an older `.skill` or `.plugin` file exists in the folder, trash it first: If an older `.skill` or `.plugin` file exists in the folder, trash it first:
- Use `search_drive_files` to find it by name pattern in the folder - Use `search_drive_files` to find it by name pattern in the folder
@@ -326,6 +336,11 @@ Fields to always update when documenting an existing build:
- **Q** (Last Updated): today (YYYY-MM-DD) - **Q** (Last Updated): today (YYYY-MM-DD)
- **R** (Notes): brief specific note about what changed - **R** (Notes): brief specific note about what changed
**Do not clobber unrelated columns.** When updating an existing row, write only the cells
that changed (use targeted range writes, e.g. `F5` and `Q5:R5`) rather than rewriting the
whole row. Columns like M (Chat Space) and O (Odoo Module) are often maintained by hand —
overwriting them with blanks loses data.
For new rows, Status = Beta for a first-time documented build. For new rows, Status = Beta for a first-time documented build.
Adjust if the user specifies otherwise. Adjust if the user specifies otherwise.