@agent-native/core 0.39.0 → 0.39.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli/index.js +1 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/skills.d.ts +5 -4
- package/dist/cli/skills.d.ts.map +1 -1
- package/dist/cli/skills.js +151 -15
- package/dist/cli/skills.js.map +1 -1
- package/package.json +1 -1
package/dist/cli/skills.js
CHANGED
|
@@ -15,7 +15,7 @@ const HELP = `agent-native skills
|
|
|
15
15
|
|
|
16
16
|
Usage:
|
|
17
17
|
agent-native skills list
|
|
18
|
-
agent-native skills add assets|design-exploration|visual-plan|visual-questions|ui-plan|prototype-plan|visualize-plan|context-xray [--client codex|claude-code|claude-code-cli|cowork|all] [--scope user|project] [--mcp-url <url>] [--no-connect] [--yes] [--dry-run] [--json]
|
|
18
|
+
agent-native skills add assets|design-exploration|visual-plan|visual-questions|ui-plan|prototype-plan|plan-design|visualize-plan|context-xray [--client codex|claude-code|claude-code-cli|cowork|all] [--scope user|project] [--mcp-url <url>] [--no-connect] [--yes] [--dry-run] [--json]
|
|
19
19
|
agent-native skills add <manifest-or-app-dir> [--client ...] [--yes]
|
|
20
20
|
|
|
21
21
|
Examples:
|
|
@@ -196,7 +196,7 @@ iteration, or a human-in-the-loop choice among design directions.
|
|
|
196
196
|
`;
|
|
197
197
|
/**
|
|
198
198
|
* Shared setup/auth block for every Plans skill (`/visual-plan`, `/ui-plan`,
|
|
199
|
-
* `/prototype-plan`, `/visual-questions`, `/visualize-plan`). Interpolated into each skill markdown
|
|
199
|
+
* `/prototype-plan`, `/plan-design`, `/visual-questions`, `/visualize-plan`). Interpolated into each skill markdown
|
|
200
200
|
* so the install + one-step authenticate instructions never drift between them.
|
|
201
201
|
* Keep this in sync with the copies under `templates/plan/.agents/skills/*` and
|
|
202
202
|
* top-level `skills/*` (this skill's SKILL.md is triplicated with no sync test).
|
|
@@ -214,7 +214,7 @@ intended), so the first tool call does not hit an OAuth wall:
|
|
|
214
214
|
agent-native skills add visual-plan
|
|
215
215
|
\`\`\`
|
|
216
216
|
|
|
217
|
-
After that, \`/visual-plan\` (and \`/ui-plan\`, \`/prototype-plan\`,
|
|
217
|
+
After that, \`/visual-plan\` (and \`/ui-plan\`, \`/prototype-plan\`, \`/plan-design\`,
|
|
218
218
|
\`/visual-questions\`, \`/visualize-plan\`) generate a plan and open the editor. Pass \`--no-connect\` to
|
|
219
219
|
register the connector without authenticating, then run
|
|
220
220
|
\`agent-native connect https://plan.agent-native.com\` whenever you are ready.
|
|
@@ -259,6 +259,7 @@ user reacts to visuals first and reads prose only where it helps.
|
|
|
259
259
|
\`/visual-plan\` is the canonical command and the main entry point. Use \`/ui-plan\`
|
|
260
260
|
when the work is primarily product UI and review should start with the screens.
|
|
261
261
|
Use \`/prototype-plan\` when review should start with a functional live prototype.
|
|
262
|
+
Use \`/plan-design\` when review should start with full-fidelity branded design.
|
|
262
263
|
Use \`/visual-questions\` only when the user explicitly wants a visual intake form
|
|
263
264
|
before planning. Use \`/visualize-plan\` to turn an existing Codex, Claude Code,
|
|
264
265
|
Markdown, or pasted plan into a visual companion.
|
|
@@ -647,6 +648,8 @@ already shows. Never produce this.
|
|
|
647
648
|
- \`create-ui-plan\`: start a UI-first plan when the work is primarily product UI.
|
|
648
649
|
- \`create-prototype-plan\`: start a prototype-first plan with a functional top
|
|
649
650
|
review surface.
|
|
651
|
+
- \`create-plan-design\`: start a full-fidelity branded Design-tab plan with an
|
|
652
|
+
optional matching Prototype tab.
|
|
650
653
|
- \`convert-visual-plan-to-prototype\`: convert an existing HTML wireframe canvas
|
|
651
654
|
into a prototype plan.
|
|
652
655
|
- \`create-visual-questions\`: use only for the explicit \`/visual-questions\`
|
|
@@ -683,7 +686,7 @@ intended), so the first tool call does not hit an OAuth wall:
|
|
|
683
686
|
agent-native skills add visual-plan
|
|
684
687
|
\`\`\`
|
|
685
688
|
|
|
686
|
-
After that, \`/visual-plan\` (and \`/ui-plan\`, \`/prototype-plan\`,
|
|
689
|
+
After that, \`/visual-plan\` (and \`/ui-plan\`, \`/prototype-plan\`, \`/plan-design\`,
|
|
687
690
|
\`/visual-questions\`, \`/visualize-plan\`) generate a plan and open the editor. Pass \`--no-connect\` to
|
|
688
691
|
register the connector without authenticating, then run
|
|
689
692
|
\`agent-native connect https://plan.agent-native.com\` whenever you are ready.
|
|
@@ -727,9 +730,10 @@ react to.
|
|
|
727
730
|
|
|
728
731
|
\`/visual-plan\` remains the general command for architecture, backend, refactors,
|
|
729
732
|
and mixed work. Use \`/prototype-plan\` when the UI review needs a functional live
|
|
730
|
-
prototype instead of static screens. Use \`/
|
|
731
|
-
|
|
732
|
-
|
|
733
|
+
prototype instead of static screens. Use \`/plan-design\` when polish, brand, or
|
|
734
|
+
visual fidelity are material to the decision. Use \`/visual-questions\` only when
|
|
735
|
+
the user explicitly wants visual intake before planning, and \`/visualize-plan\`
|
|
736
|
+
when a text plan already exists.
|
|
733
737
|
|
|
734
738
|
## Plan Discipline
|
|
735
739
|
|
|
@@ -1074,6 +1078,8 @@ already shows. Never produce this.
|
|
|
1074
1078
|
- \`create-ui-plan\`: create the UI-first structured visual plan.
|
|
1075
1079
|
- \`create-prototype-plan\`: create a prototype-first plan when UI review needs a
|
|
1076
1080
|
functional live prototype.
|
|
1081
|
+
- \`create-plan-design\`: create a full-fidelity branded design plan when polish,
|
|
1082
|
+
brand, and detailed visual direction are primary review inputs.
|
|
1077
1083
|
- \`convert-visual-plan-to-prototype\`: convert an existing HTML wireframe canvas
|
|
1078
1084
|
into a prototype plan.
|
|
1079
1085
|
- \`create-visual-questions\`: use only for the explicit \`/visual-questions\`
|
|
@@ -1109,7 +1115,7 @@ intended), so the first tool call does not hit an OAuth wall:
|
|
|
1109
1115
|
agent-native skills add visual-plan
|
|
1110
1116
|
\`\`\`
|
|
1111
1117
|
|
|
1112
|
-
After that, \`/visual-plan\` (and \`/ui-plan\`, \`/prototype-plan\`,
|
|
1118
|
+
After that, \`/visual-plan\` (and \`/ui-plan\`, \`/prototype-plan\`, \`/plan-design\`,
|
|
1113
1119
|
\`/visual-questions\`, \`/visualize-plan\`) generate a plan and open the editor. Pass \`--no-connect\` to
|
|
1114
1120
|
register the connector without authenticating, then run
|
|
1115
1121
|
\`agent-native connect https://plan.agent-native.com\` whenever you are ready.
|
|
@@ -1293,6 +1299,116 @@ reviewing and iterating.
|
|
|
1293
1299
|
- \`visualize-plan\`
|
|
1294
1300
|
- \`visual-questions\`
|
|
1295
1301
|
`;
|
|
1302
|
+
export const PLAN_DESIGN_SKILL_MD = [
|
|
1303
|
+
"---",
|
|
1304
|
+
"name: plan-design",
|
|
1305
|
+
"description: >-",
|
|
1306
|
+
" Use Agent-Native Plans for full-fidelity UI design planning with a Design",
|
|
1307
|
+
" canvas tab and optional interactive Prototype tab before implementation.",
|
|
1308
|
+
"metadata:",
|
|
1309
|
+
" visibility: exported",
|
|
1310
|
+
"---",
|
|
1311
|
+
"",
|
|
1312
|
+
"# Plan Design",
|
|
1313
|
+
"",
|
|
1314
|
+
"Use `/plan-design` when the user needs a high-fidelity product design before",
|
|
1315
|
+
"implementation: polished branded screens, realistic content, visual direction,",
|
|
1316
|
+
"and interaction review. It is the full-fidelity companion to `/visual-plan` and",
|
|
1317
|
+
"`/prototype-plan`: the top review surface should show `Design` and, when the",
|
|
1318
|
+
"flow needs interaction, `Prototype`.",
|
|
1319
|
+
"",
|
|
1320
|
+
"## When To Use",
|
|
1321
|
+
"",
|
|
1322
|
+
"Use this for UI-heavy work where brand, visual hierarchy, polished layout, or",
|
|
1323
|
+
"interaction feel are material to the decision. Skip it for small copy, spacing,",
|
|
1324
|
+
"or obvious component changes.",
|
|
1325
|
+
"",
|
|
1326
|
+
"## Research First",
|
|
1327
|
+
"",
|
|
1328
|
+
"Before creating the plan:",
|
|
1329
|
+
"",
|
|
1330
|
+
"1. Inspect the real app shell, routes, components, CSS variables, Tailwind",
|
|
1331
|
+
" tokens, theme files, and any relevant screenshots.",
|
|
1332
|
+
"2. If `design.md` exists, treat it as the primary design brief and pass its",
|
|
1333
|
+
" important content into `create-plan-design.designMd`.",
|
|
1334
|
+
"3. If a `.fig` local-copy file or parsed brand kit is available, use the",
|
|
1335
|
+
" Design/brand-kit parsing actions from the app or shared tooling first, then",
|
|
1336
|
+
" pass the extracted token summary into `brandKit`.",
|
|
1337
|
+
"4. Parse existing codebase style info when possible: CSS custom properties,",
|
|
1338
|
+
" Tailwind config, global CSS, font declarations, spacing/radius tokens, and",
|
|
1339
|
+
" component conventions. Pass the compact evidence into `codebaseStyles`.",
|
|
1340
|
+
"5. Ground every screen in actual product content. Avoid lorem ipsum, generic",
|
|
1341
|
+
" marketing filler, and placeholder gray boxes unless designing an explicit",
|
|
1342
|
+
" loading state.",
|
|
1343
|
+
"",
|
|
1344
|
+
"## Create The Plan",
|
|
1345
|
+
"",
|
|
1346
|
+
"Call `create-plan-design` with:",
|
|
1347
|
+
"",
|
|
1348
|
+
"- `title`, `brief`, `repoPath`, and any `implementationNotes`.",
|
|
1349
|
+
"- `designMd`, `brandKit`, `codebaseStyles`, or `designNotes` when available.",
|
|
1350
|
+
"- `screens`: one to six full-fidelity HTML/CSS screen fragments. Each screen",
|
|
1351
|
+
" must include a bounded `html` fragment, optional scoped `css`, a `surface`,",
|
|
1352
|
+
" and stable `data-design-id` attributes on elements a reviewer might edit.",
|
|
1353
|
+
"- `transitions` only when the Prototype tab should support true screen/step",
|
|
1354
|
+
' navigation. Use `data-goto="screen-id"` in the screen HTML for those controls.',
|
|
1355
|
+
"",
|
|
1356
|
+
"The Design tab is the visual source of truth. The Prototype tab is for behavior",
|
|
1357
|
+
"and should reuse the same visual styling where practical. Do not create a",
|
|
1358
|
+
"separate design direction in the prototype.",
|
|
1359
|
+
"",
|
|
1360
|
+
"## Full-Fidelity HTML Rules",
|
|
1361
|
+
"",
|
|
1362
|
+
"- Write bounded fragments only: no `<html>`, `<head>`, `<body>`, `<script>`,",
|
|
1363
|
+
" `<style>`, external imports, iframes, SVG, or executable URLs.",
|
|
1364
|
+
"- Put CSS in the screen `css` field. The renderer scopes it to the artboard.",
|
|
1365
|
+
"- Use real CSS and CSS variables. Tailwind-like class names are fine only when",
|
|
1366
|
+
" the provided `css` defines them or the classes are harmless semantic hooks.",
|
|
1367
|
+
'- Use `renderMode: "design"` on design screen data when authoring full',
|
|
1368
|
+
" structured content directly.",
|
|
1369
|
+
'- Add `data-design-id="meaningful-name"` to editable elements such as hero',
|
|
1370
|
+
" panels, key buttons, cards, nav items, pricing rows, chart panels, and state",
|
|
1371
|
+
" chips. Keep ids stable and descriptive.",
|
|
1372
|
+
"- Keep the design responsive within the selected surface. Text must not clip,",
|
|
1373
|
+
" overlap, or rely on viewport-sized type.",
|
|
1374
|
+
"",
|
|
1375
|
+
"## Targeted Style Edits",
|
|
1376
|
+
"",
|
|
1377
|
+
"When a reviewer selects an element in the Design tab or asks for a specific",
|
|
1378
|
+
"style change, avoid regenerating the whole plan. Use:",
|
|
1379
|
+
"",
|
|
1380
|
+
"```json",
|
|
1381
|
+
"{",
|
|
1382
|
+
' "op": "update-design-element-style",',
|
|
1383
|
+
' "frameId": "frame-overview",',
|
|
1384
|
+
' "elementId": "primary-cta",',
|
|
1385
|
+
' "styles": {',
|
|
1386
|
+
' "background-color": "#0f766e",',
|
|
1387
|
+
' "border-radius": "10px"',
|
|
1388
|
+
" }",
|
|
1389
|
+
"}",
|
|
1390
|
+
"```",
|
|
1391
|
+
"",
|
|
1392
|
+
"Use `frameId` for inline canvas designs or `blockId` for a referenced wireframe",
|
|
1393
|
+
"block. Set a style value to `null` to remove it. Use `patch-wireframe-html` or",
|
|
1394
|
+
"`patch-prototype-html` for text/content changes inside a fragment.",
|
|
1395
|
+
"",
|
|
1396
|
+
"## Document Handoff",
|
|
1397
|
+
"",
|
|
1398
|
+
"Below the visual surface, keep the document concise and implementation-oriented:",
|
|
1399
|
+
"actual files and symbols, state/actions/contracts, open questions, risks, and",
|
|
1400
|
+
"verification. The document should not repeat the same screens in prose.",
|
|
1401
|
+
"",
|
|
1402
|
+
"Before implementation, call `get-plan-feedback` and treat comments, selected",
|
|
1403
|
+
"element details, and recent review events as the source of truth.",
|
|
1404
|
+
"",
|
|
1405
|
+
"## Related Skills",
|
|
1406
|
+
"",
|
|
1407
|
+
"- `visual-plan`",
|
|
1408
|
+
"- `ui-plan`",
|
|
1409
|
+
"- `prototype-plan`",
|
|
1410
|
+
"- `frontend-design`",
|
|
1411
|
+
].join("\n") + "\n";
|
|
1296
1412
|
export const VISUAL_QUESTIONS_SKILL_MD = `---
|
|
1297
1413
|
name: visual-questions
|
|
1298
1414
|
description: >-
|
|
@@ -1309,7 +1425,7 @@ Use \`/visual-questions\` when the next best step is not a plan yet, but a
|
|
|
1309
1425
|
reviewable visual intake: single-choice chips, multi-select chips, freeform
|
|
1310
1426
|
notes, mockup choices, sketch diagrams, and a generated answer summary that feeds
|
|
1311
1427
|
the next planning prompt. It composes with \`/visual-plan\`, \`/ui-plan\`,
|
|
1312
|
-
\`/prototype-plan\`, and \`/visualize-plan\`.
|
|
1428
|
+
\`/prototype-plan\`, \`/plan-design\`, and \`/visualize-plan\`.
|
|
1313
1429
|
|
|
1314
1430
|
## When To Use
|
|
1315
1431
|
|
|
@@ -1320,11 +1436,11 @@ the next planning prompt. It composes with \`/visual-plan\`, \`/ui-plan\`,
|
|
|
1320
1436
|
than answering text-only prompts.
|
|
1321
1437
|
|
|
1322
1438
|
Gate hard: skip this for tiny, unambiguous changes. If the agent can reasonably
|
|
1323
|
-
infer the answer, prefer \`/ui-plan\`, \`/prototype-plan\`,
|
|
1324
|
-
assumptions in the plan.
|
|
1439
|
+
infer the answer, prefer \`/ui-plan\`, \`/prototype-plan\`, \`/plan-design\`, or
|
|
1440
|
+
\`/visual-plan\` directly and put assumptions in the plan.
|
|
1325
1441
|
|
|
1326
1442
|
Visual questions are an explicit intake command, not an automatic preflight for
|
|
1327
|
-
\`/visual-plan\`, \`/ui-plan\`, or \`/
|
|
1443
|
+
\`/visual-plan\`, \`/ui-plan\`, \`/prototype-plan\`, or \`/plan-design\`.
|
|
1328
1444
|
|
|
1329
1445
|
## Workflow
|
|
1330
1446
|
|
|
@@ -1335,6 +1451,7 @@ Visual questions are an explicit intake command, not an automatic preflight for
|
|
|
1335
1451
|
3. Surface the returned Plans link and ask the user to answer visually.
|
|
1336
1452
|
4. The generated summary drives the next step: \`create-ui-plan\` for static UI
|
|
1337
1453
|
review, \`create-prototype-plan\` for click-through UI flows,
|
|
1454
|
+
\`create-plan-design\` for high-fidelity branded UI review,
|
|
1338
1455
|
\`create-visual-plan\` for general plans, \`visualize-plan\` when a text plan
|
|
1339
1456
|
already exists, or \`update-visual-plan\` with targeted \`contentPatches\` to
|
|
1340
1457
|
fold answers into an active plan.
|
|
@@ -1374,6 +1491,8 @@ desktop/mobile pair for a popover, panel, or component.
|
|
|
1374
1491
|
- \`create-ui-plan\`: create a UI-first plan from the answers.
|
|
1375
1492
|
- \`create-prototype-plan\`: create a prototype-first plan from the answers when
|
|
1376
1493
|
interaction feel matters.
|
|
1494
|
+
- \`create-plan-design\`: create a high-fidelity branded design plan from the
|
|
1495
|
+
answers when visual polish is the primary review input.
|
|
1377
1496
|
- \`create-visual-plan\`: create a general visual plan from the answers.
|
|
1378
1497
|
- \`visualize-plan\`: enrich an existing text plan after answers are gathered.
|
|
1379
1498
|
- \`export-visual-plan\`: export answer plans as HTML, Markdown fallback,
|
|
@@ -1394,7 +1513,7 @@ intended), so the first tool call does not hit an OAuth wall:
|
|
|
1394
1513
|
agent-native skills add visual-plan
|
|
1395
1514
|
\`\`\`
|
|
1396
1515
|
|
|
1397
|
-
After that, \`/visual-plan\` (and \`/ui-plan\`, \`/prototype-plan\`,
|
|
1516
|
+
After that, \`/visual-plan\` (and \`/ui-plan\`, \`/prototype-plan\`, \`/plan-design\`,
|
|
1398
1517
|
\`/visual-questions\`, \`/visualize-plan\`) generate a plan and open the editor. Pass \`--no-connect\` to
|
|
1399
1518
|
register the connector without authenticating, then run
|
|
1400
1519
|
\`agent-native connect https://plan.agent-native.com\` whenever you are ready.
|
|
@@ -1842,7 +1961,7 @@ intended), so the first tool call does not hit an OAuth wall:
|
|
|
1842
1961
|
agent-native skills add visual-plan
|
|
1843
1962
|
\`\`\`
|
|
1844
1963
|
|
|
1845
|
-
After that, \`/visual-plan\` (and \`/ui-plan\`, \`/prototype-plan\`,
|
|
1964
|
+
After that, \`/visual-plan\` (and \`/ui-plan\`, \`/prototype-plan\`, \`/plan-design\`,
|
|
1846
1965
|
\`/visual-questions\`, \`/visualize-plan\`) generate a plan and open the editor. Pass \`--no-connect\` to
|
|
1847
1966
|
register the connector without authenticating, then run
|
|
1848
1967
|
\`agent-native connect https://plan.agent-native.com\` whenever you are ready.
|
|
@@ -1960,6 +2079,7 @@ const BUILT_IN_APP_SKILLS = {
|
|
|
1960
2079
|
"visual-questions": VISUAL_QUESTIONS_SKILL_MD,
|
|
1961
2080
|
"ui-plan": UI_PLAN_SKILL_MD,
|
|
1962
2081
|
"prototype-plan": PROTOTYPE_PLAN_SKILL_MD,
|
|
2082
|
+
"plan-design": PLAN_DESIGN_SKILL_MD,
|
|
1963
2083
|
"visualize-plan": VISUALIZE_PLAN_SKILL_MD,
|
|
1964
2084
|
},
|
|
1965
2085
|
manifest: normalizeAppSkillManifest({
|
|
@@ -1974,7 +2094,7 @@ const BUILT_IN_APP_SKILLS = {
|
|
|
1974
2094
|
mcp: { serverName: "agent-native-plans" },
|
|
1975
2095
|
auth: {
|
|
1976
2096
|
mode: "oauth",
|
|
1977
|
-
setup: "Install with the Agent-Native CLI to add /visual-plan, /
|
|
2097
|
+
setup: "Install with the Agent-Native CLI to add the /visual-plan, /ui-plan, /prototype-plan, /plan-design, /visual-questions, and /visualize-plan skills plus the Plans MCP connector. Authenticate only for hosted/account-backed sharing.",
|
|
1978
2098
|
},
|
|
1979
2099
|
surfaces: [
|
|
1980
2100
|
{
|
|
@@ -2000,6 +2120,12 @@ const BUILT_IN_APP_SKILLS = {
|
|
|
2000
2120
|
path: "/plans",
|
|
2001
2121
|
description: "Create a prototype-first Agent-Native plan with a functional live prototype above the document.",
|
|
2002
2122
|
},
|
|
2123
|
+
{
|
|
2124
|
+
id: "plan-design",
|
|
2125
|
+
action: "create-plan-design",
|
|
2126
|
+
path: "/plans",
|
|
2127
|
+
description: "Create a full-fidelity Agent-Native design plan with a Design canvas tab and optional matching Prototype tab.",
|
|
2128
|
+
},
|
|
2003
2129
|
{
|
|
2004
2130
|
id: "visualize-plan",
|
|
2005
2131
|
action: "visualize-plan",
|
|
@@ -2027,6 +2153,11 @@ const BUILT_IN_APP_SKILLS = {
|
|
|
2027
2153
|
visibility: "exported",
|
|
2028
2154
|
exportAs: "prototype-plan",
|
|
2029
2155
|
},
|
|
2156
|
+
{
|
|
2157
|
+
path: "skills/plan-design",
|
|
2158
|
+
visibility: "exported",
|
|
2159
|
+
exportAs: "plan-design",
|
|
2160
|
+
},
|
|
2030
2161
|
{
|
|
2031
2162
|
path: "skills/visualize-plan",
|
|
2032
2163
|
visibility: "exported",
|
|
@@ -2101,6 +2232,10 @@ const BUILT_IN_APP_SKILL_ALIASES = {
|
|
|
2101
2232
|
"ui-plans": "visual-plans",
|
|
2102
2233
|
"prototype-plan": "visual-plans",
|
|
2103
2234
|
"prototype-plans": "visual-plans",
|
|
2235
|
+
"plan-design": "visual-plans",
|
|
2236
|
+
"plan-designs": "visual-plans",
|
|
2237
|
+
"design-plan": "visual-plans",
|
|
2238
|
+
"design-plans": "visual-plans",
|
|
2104
2239
|
prototype: "visual-plans",
|
|
2105
2240
|
"visualize-plan": "visual-plans",
|
|
2106
2241
|
"visualize-plans": "visual-plans",
|
|
@@ -2128,6 +2263,7 @@ const BUILT_IN_APP_SKILL_DISPLAY_ALIASES = {
|
|
|
2128
2263
|
"visual-questions",
|
|
2129
2264
|
"ui-plan",
|
|
2130
2265
|
"prototype-plan",
|
|
2266
|
+
"plan-design",
|
|
2131
2267
|
"visualize-plan",
|
|
2132
2268
|
"html-plan",
|
|
2133
2269
|
"plannotate",
|