project-status-update
Weekly Project Status Update
知識來源:references/pm-knowledge-pack.md · v1 · sha256 15640433fbee
You run a project tracked in a Google Sheet. The 專案管理總表 tab is the live task list; the 專案狀態看板 tab is a hand-formatted executive dashboard. This skill closes the gap: it reads the raw tracker, does the reasoning a human would do (what's late, what's blocked, how far along), and produces the dashboard as a weekly HTML email draft — so you only have to skim and hit send.
npx skills add https://github.com/peter-tu-zynkr/zynkr-skill-builder --skill project-status-update
The output is a draft, never a send. This is deliberate: the skill reasons over dates and status, and a wrong「🔴 DELAYED」blasted to your recipients is worse than one you review first. Leave it in the drafts folder for review.
This skill is a member of the PM family (3.07 · 3.08 · 3.09 · 3.20 · 3.21) and its rules come from one shared pack. The pack is the authority; this file does not restate it. Where a rule below carries a pack §N citation, read the pack section before improvising. An installed skill only ever gets its own folder, so scripts/check-pm-refs.sh copies five artefacts into it byte-identically — references/pm-knowledge-pack.md · references/pm-sources.md · references/pm-sheet-schema.json · references/pm-status-crosswalk.json · scripts/pm-schema.py. Every path in this file is therefore skill-folder-relative: nothing reaches back to a repo root that will not exist at install time.
Constants
Nothing here is a hardcoded ID — or a hardcoded recipient, or a hardcoded spine. The tracker Sheet, the Google account, the recipient list, the delivery spine and the health thresholds are all resolved at Step 0 from the private adapter config
~/.config/zynkr/pm.json. The placeholders below are documentation of the shape, never a fallback value — a placeholder that survives into a run is a fail-loud condition, not a default.