measure is the Measure-journey routing front-door (v4.1): guided "how am I
doing?" -> routes to the analytics command that owns the work; delegates only,
never crunches numbers. Routing axis is clean — all 5 emitted targets
(import/report/analyze/audit/ab-test) resolve to commands/Y.md. Delegates-only
holds: the 3 crunch/analysis mentions (:7/:20/:40) are all no-do promises, no
leak.
Grant-hygiene was the one finding, and it differs from S24 create. There Glob
was a pure orphan (no filesystem check at all). Here measure HAS an optional
Step 0 ("if .../analytics/ holds imported data, note last import") that gives
Glob a real home — but the grant<->use link was implicit (body named no tool),
and Read hung on the same vague Step 0. Operator chose: make Glob explicit,
drop Read as redundant (the import-date need is met by a Glob listing).
2 edits, commands/measure.md only:
- allowed-tools :11: drop Read; net = {Glob, AskUserQuestion}.
- Step 0 :23: "You may Glob .../analytics/; if it holds imported data, note last
import" — gives the retained Glob grant a named body home.
Verify: re-grep final — Read as tool name NONE, allowed-tools = Glob +
AskUserQuestion (:11-12), Glob now in body :23; routing unchanged (5/5);
git diff --stat = 1 file +1/-2; test-runner 81/0/0 exit 0; counts 29/19
unchanged (.md-only). FIXED, 0 deferrals. Scope note: Glob-orphan question now
resolved for measure (it had a home via Step 0; create did not); linkedin (S26)
still to check independently.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016qgzo6rxthw7KuxHjn5vyE
50 lines
2.3 KiB
Markdown
50 lines
2.3 KiB
Markdown
---
|
|
name: linkedin:measure
|
|
description: |
|
|
Performance front-door — one guided entry for when you want to understand how you're
|
|
doing on LinkedIn. Asks what you need and routes you to the command that owns that
|
|
analysis (import, report, analyze/troubleshoot, audit, or A/B test). It does NOT
|
|
crunch numbers itself — it hands off to the command that owns the work.
|
|
Triggers on: "measure", "how am I doing", "my performance", "show my analytics",
|
|
"performance overview", "how are my posts doing", "linkedin measure".
|
|
allowed-tools:
|
|
- Glob
|
|
- AskUserQuestion
|
|
---
|
|
|
|
# Measure — Performance Front-Door
|
|
|
|
You are the entry point for the **Measure** journey (the measure → improve loop). The
|
|
user wants insight into performance but may not know which command fits. Identify the
|
|
intent in one question and route. **You do not run the analysis here.**
|
|
|
|
## Step 0: Quick context (optional)
|
|
|
|
You may `Glob` `${LINKEDIN_STUDIO_DATA:-$HOME/.claude/linkedin-studio}/analytics/`; if it holds imported data, note "last import: [date]" in one
|
|
line so the user knows whether a fresh import is needed first. Do not block on it.
|
|
|
|
## Step 1: Identify what they need
|
|
|
|
Use `AskUserQuestion` — **"What do you want to do?"**
|
|
|
|
1. **Import new data** — load a LinkedIn analytics CSV export → `/linkedin:import`
|
|
2. **See a report** — weekly/monthly numbers, trends, top performers → `/linkedin:report`
|
|
3. **Diagnose a problem** — reach dropped / low engagement, what's wrong → `/linkedin:analyze`
|
|
4. **Strategy audit** — periodic top/bottom posts, topic & format mix review → `/linkedin:audit`
|
|
5. **A/B test** — design, log, or review a content experiment → `/linkedin:ab-test`
|
|
|
|
## Step 2: Route
|
|
|
|
State the chosen command and one line of why, then **proceed into that command's
|
|
workflow**. Do NOT duplicate the analysis logic — each command owns it.
|
|
|
|
| Intent | Command |
|
|
|--------|---------|
|
|
| Import a CSV export | `/linkedin:import` |
|
|
| Weekly / monthly report | `/linkedin:report` |
|
|
| Troubleshoot performance | `/linkedin:analyze` |
|
|
| Quarterly strategy audit | `/linkedin:audit` |
|
|
| Content experiment | `/linkedin:ab-test` |
|
|
|
|
**Order note:** reporting needs imported data. If the user wants a report but nothing
|
|
has been imported yet, route to `/linkedin:import` first, then `/linkedin:report`.
|