一键导入
timesheet
Interactive timesheet entry — collects work description, date, start/end times via prompts, calculates hours, appends to .campaign/timesheet.md
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Interactive timesheet entry — collects work description, date, start/end times via prompts, calculates hours, appends to .campaign/timesheet.md
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Get authoritative New Zealand weather from MetService's public JSON endpoints — town forecasts (up to 10 days), current observations, hourly forecasts with wind gusts, and multi-town comparisons. Use this whenever the user asks about NZ weather in any form; a forecast for an NZ town or region; whether it will rain, be fine, windy, or frosty somewhere in NZ; which NZ location is sunniest, warmest, driest, or best for a trip; current conditions or temperature in an NZ town; or mentions MetService by name. Prefer this over web search or global weather models (Open-Meteo, Apple Weather, AccuWeather) for any New Zealand location — MetService is NZ's national weather authority and its town forecasts routinely disagree with global models, especially for rain and wind.
Resolve exceptions in a Woolworths NZ online grocery workflow — handle out-of-stock items, find SKUs for newly-added grocery items, and write resolved SKUs back to the Product attribute notes of Iris Ingredient elements so the next shop hits the cache. Triggered automatically by `shop.sh` phase 3 when the bash bulk-add can't resolve a line; also triggers directly when the user asks to "find a Woolies SKU for this ingredient", "deal with this out-of-stock item", "find a substitute for X at Woolworths", or "resolve these woolies shopping exceptions". For the full weekly shop, the user should run `./scripts/shop.sh` from the terminal — this skill is the exception resolver, not the orchestrator. If the user asks to "do the shopping" or similar generic phrasing in a bare Claude session, point them at `shop.sh` first; only invoke this skill directly when they're explicitly working on exceptions or a single SKU lookup.
Retrieve and faithfully reproduce DoView Planning handbook diagrams to accompany an outcomes-theory answer. Use after a doview-outcomes-answer response when the user asks to see the diagrams, requests the visual model, says "show me the picture/diagram/figure", or whenever an outcomes-theory answer would land better with the original tool diagrams visible. Reproduces Mermaid blocks from the local Markdown edition first (https://github.com/cgbarlow/doview-book), and falls back to the upstream PNG/image-file URLs from doviewplanning.org when a chapter's diagram does not translate cleanly to Mermaid. Faithful — never redraws, simplifies, paraphrases, or substitutes images or Mermaid blocks. Pair with doview-outcomes-answer, which sets up the seed list this skill consumes.
Answer outcomes-theory questions strictly from Dr Paul Duignan's DoView Planning and Outcomes Theory Handbook (2025). Use whenever the user asks for an outcomes-theory perspective, requests a DoView analysis, asks "what does outcomes theory say about…", asks to analyse a strategy/proposal/plan/policy/programme/business-case/M&E plan/contract through an outcomes lens, mentions outcomes theory or outcomes systems or DoView Boards or strategy-outcomes diagrams or theory-of-change, shares a document and wants it critiqued for clarity of outcomes, or wants a formal standalone response with the Summary + Full structure and raw-visible copy-safe URLs that the handbook's Prompt A v1.1.9 demands. Strictly avoids first-person and drafting-advice language; uses outcomes theory as the primary frame and DoView as its applied form. Pair with `doview-image-retriever` to retrieve the original diagrams (Mermaid from this repo or PNG from doviewplanning.org).
A coaching companion for a 13-year-old advanced math student who learns several levels above curriculum. Use whenever he asks for help with a math problem, posts a screenshot or photo of a question, mentions homework, says he is stuck, or asks why something works. Coaches him through problems without giving away answers, hooks his interest with weird real-world applications, basketball, anime, and connections to advanced math, and gently catches him when he has skipped the workbook instructions. Trigger this skill on the first math turn of any conversation and keep using it through the whole session.
Drive the iris-cli command-line tool to search, browse, ask AI questions about, and export content from an Iris architecture-knowledge repository (https://github.com/cgbarlow/iris). Use whenever the user mentions iris in an architecture/systems context, references an iris diagram/element/package/set/collection, asks iris's AI a question about systems, or wants to export an iris artefact as JSON or Markdown — even when the user doesn't say "iris-cli" by name. The skill ensures iris-cli is installed (uv tool), guides login (SQLite mode is interactive; Supabase deployments require --token with an externally-minted PAT because /api/auth/login is disabled), prefers --json for machine-parsable output when chaining results, and routes the user to the correct iris-api backend host (not the SvelteKit frontend, not the iris-mcp service).
| name | timesheet |
| description | Interactive timesheet entry — collects work description, date, start/end times via prompts, calculates hours, appends to .campaign/timesheet.md |
| user_invocable | true |
Update the project timesheet at .campaign/timesheet.md.
Before creating a new timesheet, search for an existing one using Glob (**/.campaign/timesheet.md). If found, use that path. Only create a new one if none exists — create it in the nearest directory that already has a .campaign/ folder, or in the project root.
The timesheet file may contain a Timezone: line (e.g. Timezone: Pacific/Auckland). When getting the current time via Bash, always use this timezone: TZ=<timezone> date '+%Y-%m-%d %I:%M %p'. If no timezone line is found in the timesheet, ask the user for their timezone using AskUserQuestion and add it to the timesheet file (below the Instructions heading).
If the user's arguments contain "clock in":
date via Bash with the configured timezone, round down to the nearest 15 minutes (e.g. 8:37 PM → 8:30 PM)(Clocked in... description pending), the rounded start time, and leave End Time and Hours blank (—)If the user's arguments contain "clock out":
(Clocked in... description pending) as its descriptiondate via Bash with the configured timezone, round down to the nearest 15 minutesAskUserQuestion to collect the description of work doneIf the user is NOT clocking in/out, follow this flow:
AskUserQuestion to collect the following for each entry:
.campaign/timesheet.mdEvery time an entry is added, edited, or removed, recalculate the Weekly Summary table above the Entries table. Weeks are identified by their Monday start date (ISO week, Mon–Sun). The total hours line below the weekly summary must always equal the sum of all entry hours.
Calculating the week-starting Monday for a date:
For example, Sunday 2026-03-01 belongs to the week starting Monday 2026-02-23 (subtract 6 days). Monday 2026-03-02 starts a new week. Always use this calculation — do NOT treat the entry date itself as the week start.
If .campaign/timesheet.md does not exist, create it with this content:
# Timesheet
## How to update
Run `/timesheet` in Claude Code to add entries, or use clock in/out:
- `/timesheet clock in` — starts a new entry at the current time
- `/timesheet clock out` — ends the open entry and prompts for a description
- `/timesheet` — manually add an entry (date, description, start/end times)
Timezone: (ask user)
---
## Weekly Summary
| Week Starting | Hours |
|---------------|-------|
**Total: 0.00 hours**
---
## Entries
| Date | Description | Start Time | End Time | Hours |
|------------|-------------|------------|----------|-------|