You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: package.json
+1-1Lines changed: 1 addition & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
1
{
2
2
"name": "annotask",
3
-
"version": "0.0.28",
3
+
"version": "0.0.29",
4
4
"description": "Visual UI design tool for web apps. Make changes in the browser and generate structured reports that AI agents can apply to source code. Works with Vue, React, Svelte, and plain HTML via Vite or Webpack.",
Copy file name to clipboardExpand all lines: skills/annotask-apply/SKILL.md
+20-2Lines changed: 20 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -14,10 +14,16 @@ Use this skill when the user says:
14
14
15
15
Annotask is a visual markup tool that integrates with Vite and Webpack. The user annotates the page with pins, sticky notes, arrows, text highlights, and drawn sections. These become **tasks** stored in `.annotask/tasks.json` and served via API. This skill fetches pending tasks, applies them, and marks them for review.
16
16
17
+
## MCP preference
18
+
19
+
If you have `annotask_*` MCP tools available, prefer them over CLI commands — they return structured data directly, are faster, and avoid shell/npx issues. If MCP tools are not available, use the CLI commands shown below.
20
+
17
21
## Steps
18
22
19
23
### 0. Check server status
20
24
25
+
**MCP:** If you have MCP tools, the server is already running — skip this step.
26
+
21
27
```bash
22
28
npx annotask status
23
29
```
@@ -26,6 +32,8 @@ If this fails, the Annotask dev server isn't running. Ask the user to start it.
26
32
27
33
### 1. Fetch pending tasks
28
34
35
+
**MCP:**`annotask_get_tasks(status: "pending")` — returns compact summaries. Use `detail: true` for full objects.
Each task summary has: `id`, `type`, `status`, `description`, `file`, `line`, and optionally `component`, `action`, `screenshot`, `feedback` (on denied tasks), `blocked_reason`, `resolution`.
39
47
40
-
For full task details (context, element_context, viewport, interaction_history, agent_feedback), use the `annotask_get_task` MCP tool with a specific task ID. Only fetch full details when the summary doesn't provide enough context to apply the change.
48
+
For full task details (context, element_context, viewport, interaction_history, agent_feedback), use `annotask_get_task` MCP tool or `npx annotask tasks --pretty`. Only fetch full details when the summary doesn't provide enough context to apply the change.
41
49
42
50
### Screenshot reference
43
51
44
52
Some tasks include a `screenshot` field. The screenshot shows exactly what the user sees in the browser. To view it:
@@ -97,6 +109,8 @@ Read the task type and apply accordingly:
97
109
98
110
If you are **genuinely stuck** — missing API context, unclear library usage, ambiguous intent that could lead to a wrong implementation — ask the user for clarification instead of guessing:
99
111
112
+
**MCP:**`annotask_update_task(task_id: "TASK_ID", questions: [{"id":"q1","text":"Which auth library should I use?","type":"choice","options":["NextAuth","Clerk","Custom"]},{"id":"q2","text":"Where is the session config located?","type":"text"}])`
113
+
100
114
```bash
101
115
npx annotask update-task TASK_ID --ask='{"message":"Optional markdown context","questions":[{"id":"q1","text":"Which auth library should I use?","type":"choice","options":["NextAuth","Clerk","Custom"]},{"id":"q2","text":"Where is the session config located?","type":"text"}]}'
102
116
```
@@ -111,12 +125,14 @@ This sets the task to `needs_info` status. The user sees your questions in the A
111
125
- Only ask when you truly cannot proceed — do not ask for confirmation on straightforward tasks
112
126
- Be specific: "Which CSS framework should I use for the grid?" is better than "How should I do this?"
113
127
- Combine related questions into a single ask rather than multiple rounds
114
-
- After asking, move on to the next task. Come back to check answers later via `npx annotask tasks`
128
+
- After asking, move on to the next task. Come back to check answers later via `annotask_get_tasks` MCP tool or `npx annotask tasks`
115
129
116
130
#### d. Mark as blocked (when the task can't be done)
117
131
118
132
If the task is **fundamentally outside your control** — a performance issue in a third-party library, an accessibility bug in a dependency, a config change that requires infrastructure access, etc. — mark it as blocked with an explanation:
119
133
134
+
**MCP:**`annotask_update_task(task_id: "TASK_ID", blocked_reason: "This layout shift is caused by vue-router v4's async route loading. Needs upstream fix or a loading skeleton wrapper — cannot be resolved by editing component code alone.")`
135
+
120
136
```bash
121
137
npx annotask update-task TASK_ID --blocked-reason="This layout shift is caused by vue-router v4's async route loading. Needs upstream fix or a loading skeleton wrapper — cannot be resolved by editing component code alone."
122
138
```
@@ -131,6 +147,8 @@ This sets the task to `blocked` status automatically. The user sees your explana
131
147
132
148
As soon as you finish applying **this** task, mark it for review with a brief resolution note:
133
149
150
+
**MCP:**`annotask_update_task(task_id: "TASK_ID", status: "review", resolution: "Swapped grid to flexbox, added gap-4 for spacing")`
151
+
134
152
```bash
135
153
npx annotask update-task TASK_ID --status=review --resolution="Swapped grid to flexbox, added gap-4 for spacing"
0 commit comments