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",
"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.",
"author": "Message Point Media",
"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.
**Version:** 1.1
**Version:** 1.2
**Author:** Message Point Media
**Repo:** https://git.mpm.to/mpm/cowork-project
**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 |
|---|---|---|
| 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.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 |
| .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 |
| 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 |
|---|---|
| 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` |
| Project Registry (Sheet ID) | `1xN3l3CjhkpXQBo6hS85Qii86fC-yILg6qbxd33cChMA` |
| Registry sheet name | `Project Registry` |
| Wiki Template V2 (Doc ID) | `1QySFc6lycK9AOIaiuQFkv9pGiRlm7S9_wgFsrXM4Alo` |
| 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.
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.
- 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:**
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
@@ -88,6 +91,18 @@ Determine the mode before doing anything else:
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?"*
**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
@@ -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 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.
**Step 3 — Create repo if requested**
@@ -3,6 +3,9 @@
Full step-by-step process for creating or updating coordination artifacts for a
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) —
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
@@ -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
```
**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:
- `.claude-plugin/plugin.json` → name, version, description, author, keywords
- `.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`
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:
- 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)
- **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.
Adjust if the user specifies otherwise.