Files

185 lines
8.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# CoWork Repository Update
CoWork skill that manages the full coordination lifecycle for MPM CoWork skills and plugins.
**Version:** 1.1
**Author:** Message Point Media
**Repo:** https://git.alwisp.com/jason/cowork-project
**CoWork Project:** CW-002 — CoWork Repository Update
---
## Overview
This skill automates every coordination step that must happen when a new CoWork skill, plugin, or tool is created or updated at MPM. It handles two distinct lifecycle modes: capturing a concept that doesn't exist yet (Mode 1), and documenting a fully-built or recently-updated project (Mode 2). It connects directly to the MPM CoWork coordination system in Google Drive (folder structure, Google Docs Wiki V2, and Google Sheets project registry) and to the MPM Gitea instance for repo creation and README pushes. All Drive operations use the Google Workspace MCP exclusively — the local FUSE mount path is never used due to OSError Errno 35 deadlock issues.
---
## Skills
| Skill | What It Does |
|---|---|
| `cowork-repository-update` | Manages the full CoWork project coordination lifecycle. Triggers on: "new skill idea", "I want to build a plugin for X", "let's capture this concept", "add a new project to the registry", "create the entry for this", "document this plugin", "update the wiki", "add to the coordination folder", "set up the project folder", "package the plugin", "we just finished building", "update the registry for". Runs Mode 1 (concept interview) or Mode 2 (document existing build) depending on context. |
---
## Tools Reference
This is a skill-only plugin — no MCP server. It orchestrates existing connected tools:
| Tool Group | Tools Used |
|---|---|
| **Google Drive** | `create_drive_folder`, `create_drive_file`, `update_drive_file` |
| **Google Docs** | `create_doc`, `batch_update_doc` |
| **Google Sheets** | `read_sheet_values`, `modify_sheet_values` |
| **Gitea** | `create_repo`, `create_or_update_file`, `get_file_contents` |
---
## System Constants
| Item | Value |
|---|---|
| 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.alwisp.com/` |
---
## Mode 1 — Concept
Runs a structured interview to capture a new skill/plugin/tool concept before any code exists.
**Interview covers:**
1. CW-ID (user-specified or auto-assigned)
2. Project name
3. Type (Plugin / Skill / Tool / Feature)
4. Concept description (24 sentences)
5. Capabilities to expose
6. Owner and contributors
7. Priority (Critical / High / Medium / Low)
8. Dependencies
9. Git repo (existing URL or offer to create one)
**Outputs (in order):**
1. Assign CW-ID — always ask user first; if auto-assigning, read all column A values, parse as integers, take max+1
2. Create Drive folder `CW-XXX — [Project Name]` in Coordination folder
3. Create Git repo via Gitea MCP if requested
4. Write `CW-XXX_Concept.md` to Drive folder via `create_drive_file` (never local FUSE path)
5. Add registry row at correct numeric position (shift rows down for backfill)
6. Confirm: CW-ID, folder link, Concept.md link, registry row
The Concept.md is designed to be read at the start of the build session to orient Claude on the agreed scope and design intent.
---
## Mode 2 — Document Existing Build
Full 10-step process for creating or refreshing all coordination artifacts for a built or updated project.
**Steps:**
1. **Gather source** — repo URL, plugin file (if any), CW-ID (ask user first for designated ID)
2. **Extract metadata** — download repo archive; read plugin.json, SKILL.md, references/, assets/, existing README
3. **Determine CW-ID and registry state** — read existing row if one exists; only update changed fields
4. **Create Drive folder**`CW-XXX — [Project Name]` in Coordination folder (or use existing)
5. **Write README.md** — thorough; if SKILL.md lists 12 tools, README lists all 12; push to Drive folder AND Git repo
6. **Package .skill file** — skill-only: stage into single top-level folder with SKILL.md at root; with server: zip server/ + .mcp.json + plugin.json + SKILL.md; upload to Drive folder
7. **Create or update Wiki Doc** — V2 5-section format; use `create_doc``update_drive_file add_parents``batch_update_doc`; if updating, prepend changelog row only
8. **Verify all 3 artifacts** in Drive folder before registry write
9. **Update registry** — correct-order insertion; update Version, Drive Folder, Wiki Doc, Last Updated, Notes
10. **Confirm to user** — all artifact links + any manual follow-up flags
**Critical rules:**
- Never write files to the FUSE-mounted Google Drive path — Drive API tools only
- Thin README is worse than no README — pull every tool, every trigger phrase
- For backfill CW-IDs, read all column A values and shift rows at insertion point downward
- Confirm version number before writing any artifacts
- Skill-only .skill zip: ONE top-level folder, SKILL.md directly inside (not nested deeper)
---
## Wiki V2 Format
Every project wiki uses the 5-section V2 format:
| Section | Content |
|---|---|
| **Header block** | `CW-XXX \| Status \| Owner \| Contributors \| Last Updated` |
| **1. Concept** | 35 sentences: problem solved, how, who uses it, systems connected |
| **2. Skills Exposed** | One row per skill; include all trigger phrases and key tools |
| **3. Setup Instructions** | Complete inline steps; don't just say "see README" |
| **4. Feature Requests & Planning** | Table with #, Request, Requested By, Status |
| **5. Changelog** | Reverse chronological; add row per version; never delete old entries |
---
## Registry Column Map
| Col | Field | Col | Field |
|---|---|---|---|
| A | ID (CW-XXX) | J | Purpose |
| B | Project Name | K | Repo (Git) |
| C | Type | L | Drive Folder |
| D | Status | M | Chat Space |
| E | Priority | N | Wiki Doc |
| F | Version | O | Odoo Module |
| G | Owner | P | Dependencies |
| H | Contributors | Q | Last Updated |
| I | Description | R | Notes |
---
## Setup Instructions
This is a skill-only plugin — no server installation required.
**Prerequisites:**
- Google Workspace MCP connected (provides Drive, Docs, Sheets tools)
- Gitea MCP connected to `https://git.alwisp.com` (provides repo tools)
**Install:**
1. Install from the `.skill` file: Claude Desktop → Settings → Plugins → Add Plugin → select `cowork-repository-update-v1.1.skill`
2. Restart Claude Desktop
3. Verify: ask Claude "what's the CoWork Repository Update skill for?" — it should describe the coordination workflow
### Setup Checklist
- [ ] Google Workspace MCP connected and authenticated
- [ ] Gitea MCP connected to git.alwisp.com
- [ ] .skill file installed
- [ ] Claude Desktop restarted
- [ ] Skill responding to trigger phrases
---
## Requirements
- Claude Desktop (Cowork mode)
- Google Workspace MCP (Drive, Docs, Sheets access)
- Gitea MCP (repo creation and file push)
- Write access to the MPM Coordination Google Drive folder
- Write access to the Project Registry Google Sheet
---
## Changelog
| Date | Version | What Changed |
|---|---|---|
| 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. |
---
## Troubleshooting
| Symptom | Fix |
|---|---|
| OSError Errno 35 when writing files | Never use local FUSE path — use `create_drive_file` or `create_doc` via Drive API |
| CW-ID collision (duplicate assigned) | Read ALL column A values; parse as integers; take max+1; ask user first for designated IDs |
| 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 |