@oh-my-pi/pi-coding-agent 10.2.2 → 10.2.3

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.
Files changed (64) hide show
  1. package/CHANGELOG.md +45 -0
  2. package/package.json +7 -7
  3. package/src/commit/agentic/prompts/analyze-file.md +7 -7
  4. package/src/commit/agentic/prompts/session-user.md +4 -4
  5. package/src/commit/agentic/prompts/system.md +14 -16
  6. package/src/commit/prompts/analysis-system.md +7 -9
  7. package/src/commit/prompts/analysis-user.md +0 -3
  8. package/src/commit/prompts/changelog-system.md +14 -19
  9. package/src/commit/prompts/file-observer-system.md +2 -2
  10. package/src/commit/prompts/reduce-system.md +13 -23
  11. package/src/commit/prompts/summary-system.md +7 -21
  12. package/src/config/settings-schema.ts +135 -38
  13. package/src/cursor.ts +2 -1
  14. package/src/extensibility/extensions/index.ts +0 -11
  15. package/src/extensibility/extensions/types.ts +1 -30
  16. package/src/extensibility/hooks/types.ts +1 -31
  17. package/src/index.ts +0 -11
  18. package/src/ipy/prelude.py +1 -113
  19. package/src/lsp/index.ts +66 -515
  20. package/src/lsp/render.ts +0 -11
  21. package/src/lsp/types.ts +3 -87
  22. package/src/modes/components/settings-defs.ts +3 -2
  23. package/src/modes/components/settings-selector.ts +14 -14
  24. package/src/modes/theme/theme.ts +45 -1
  25. package/src/prompts/agents/designer.md +23 -27
  26. package/src/prompts/agents/explore.md +28 -38
  27. package/src/prompts/agents/init.md +17 -17
  28. package/src/prompts/agents/plan.md +21 -27
  29. package/src/prompts/agents/reviewer.md +37 -37
  30. package/src/prompts/compaction/branch-summary.md +9 -9
  31. package/src/prompts/compaction/compaction-summary.md +8 -12
  32. package/src/prompts/compaction/compaction-update-summary.md +17 -19
  33. package/src/prompts/review-request.md +12 -13
  34. package/src/prompts/system/custom-system-prompt.md +6 -26
  35. package/src/prompts/system/plan-mode-active.md +23 -35
  36. package/src/prompts/system/plan-mode-subagent.md +7 -7
  37. package/src/prompts/system/subagent-system-prompt.md +7 -7
  38. package/src/prompts/system/system-prompt.md +84 -125
  39. package/src/prompts/system/web-search.md +10 -10
  40. package/src/prompts/tools/ask.md +12 -15
  41. package/src/prompts/tools/bash.md +7 -7
  42. package/src/prompts/tools/exit-plan-mode.md +6 -6
  43. package/src/prompts/tools/gemini-image.md +4 -4
  44. package/src/prompts/tools/grep.md +4 -4
  45. package/src/prompts/tools/lsp.md +12 -19
  46. package/src/prompts/tools/patch.md +26 -30
  47. package/src/prompts/tools/python.md +14 -57
  48. package/src/prompts/tools/read.md +4 -4
  49. package/src/prompts/tools/replace.md +8 -8
  50. package/src/prompts/tools/ssh.md +14 -27
  51. package/src/prompts/tools/task.md +23 -35
  52. package/src/prompts/tools/todo-write.md +29 -38
  53. package/src/prompts/tools/write.md +3 -3
  54. package/src/sdk.ts +0 -2
  55. package/src/session/agent-session.ts +27 -6
  56. package/src/system-prompt.ts +1 -219
  57. package/src/task/agents.ts +2 -1
  58. package/src/tools/bash-interceptor.ts +0 -24
  59. package/src/tools/bash.ts +1 -7
  60. package/src/tools/index.ts +8 -3
  61. package/src/tools/read.ts +74 -17
  62. package/src/tools/renderers.ts +0 -2
  63. package/src/lsp/rust-analyzer.ts +0 -184
  64. package/src/tools/ls.ts +0 -307
package/src/lsp/render.ts CHANGED
@@ -33,7 +33,6 @@ import type { LspParams, LspToolDetails } from "./types";
33
33
  export function renderCall(args: LspParams, theme: Theme): Text {
34
34
  const actionLabel = (args.action ?? "request").replace(/_/g, " ");
35
35
  const queryPreview = args.query ? truncateToWidth(args.query, TRUNCATE_LENGTHS.SHORT) : undefined;
36
- const replacementPreview = args.replacement ? truncateToWidth(args.replacement, TRUNCATE_LENGTHS.SHORT) : undefined;
37
36
 
38
37
  let target: string | undefined;
39
38
  let hasFileTarget = false;
@@ -67,17 +66,10 @@ export function renderCall(args: LspParams, theme: Theme): Text {
67
66
  const meta: string[] = [];
68
67
  if (queryPreview && target) meta.push(`query:${queryPreview}`);
69
68
  if (args.new_name) meta.push(`new:${args.new_name}`);
70
- if (replacementPreview) meta.push(`replace:${replacementPreview}`);
71
- if (args.kind) meta.push(`kind:${args.kind}`);
72
69
  if (args.apply !== undefined) meta.push(`apply:${args.apply ? "true" : "false"}`);
73
- if (args.action_index !== undefined) meta.push(`action:${args.action_index}`);
74
70
  if (args.include_declaration !== undefined) {
75
71
  meta.push(`include_decl:${args.include_declaration ? "true" : "false"}`);
76
72
  }
77
- if (args.end_line !== undefined && args.line === undefined) {
78
- const endCol = args.end_character !== undefined ? `:${args.end_character}` : "";
79
- meta.push(`end:${args.end_line}${endCol}`);
80
- }
81
73
 
82
74
  const descriptionParts = [actionLabel];
83
75
  if (target) {
@@ -178,10 +170,7 @@ export function renderResult(
178
170
  }
179
171
  if (request?.query) requestLines.push(theme.fg("dim", `query: ${request.query}`));
180
172
  if (request?.new_name) requestLines.push(theme.fg("dim", `new name: ${request.new_name}`));
181
- if (request?.replacement) requestLines.push(theme.fg("dim", `replacement: ${request.replacement}`));
182
- if (request?.kind) requestLines.push(theme.fg("dim", `kind: ${request.kind}`));
183
173
  if (request?.apply !== undefined) requestLines.push(theme.fg("dim", `apply: ${request.apply ? "true" : "false"}`));
184
- if (request?.action_index !== undefined) requestLines.push(theme.fg("dim", `action: ${request.action_index}`));
185
174
  if (request?.include_declaration !== undefined) {
186
175
  requestLines.push(theme.fg("dim", `include declaration: ${request.include_declaration ? "true" : "false"}`));
187
176
  }
package/src/lsp/types.ts CHANGED
@@ -7,31 +7,9 @@ import { type Static, Type } from "@sinclair/typebox";
7
7
  // =============================================================================
8
8
 
9
9
  export const lspSchema = Type.Object({
10
- action: StringEnum(
11
- [
12
- // Standard LSP operations
13
- "diagnostics",
14
- "workspace_diagnostics",
15
- "references",
16
- "definition",
17
- "hover",
18
- "symbols",
19
- "workspace_symbols",
20
- "rename",
21
- "actions",
22
- "incoming_calls",
23
- "outgoing_calls",
24
- "status",
25
- // Rust-analyzer specific operations
26
- "flycheck",
27
- "expand_macro",
28
- "ssr",
29
- "runnables",
30
- "related_tests",
31
- "reload_workspace",
32
- ],
33
- { description: "LSP operation" },
34
- ),
10
+ action: StringEnum(["diagnostics", "definition", "references", "hover", "symbols", "rename", "status", "reload"], {
11
+ description: "LSP operation",
12
+ }),
35
13
  files: Type.Optional(Type.Array(Type.String({ description: "File path" }))),
36
14
  file: Type.Optional(Type.String({ description: "File path" })),
37
15
  line: Type.Optional(Type.Number({ description: "Line number (1-indexed)" })),
@@ -40,10 +18,7 @@ export const lspSchema = Type.Object({
40
18
  end_character: Type.Optional(Type.Number({ description: "End column for range (1-indexed)" })),
41
19
  query: Type.Optional(Type.String({ description: "Search query or SSR pattern" })),
42
20
  new_name: Type.Optional(Type.String({ description: "New name for rename" })),
43
- replacement: Type.Optional(Type.String({ description: "Replacement text for SSR" })),
44
- kind: Type.Optional(Type.String({ description: "Action kind: quickfix, refactor, source" })),
45
21
  apply: Type.Optional(Type.Boolean({ description: "Apply edits (default: true)" })),
46
- action_index: Type.Optional(Type.Number({ description: "Index of action to apply" })),
47
22
  include_declaration: Type.Optional(Type.Boolean({ description: "Include declaration in refs (default: true)" })),
48
23
  });
49
24
 
@@ -414,65 +389,6 @@ export interface LspClient {
414
389
  lastActivity: number;
415
390
  }
416
391
 
417
- // =============================================================================
418
- // Call Hierarchy Types
419
- // =============================================================================
420
-
421
- export interface CallHierarchyItem {
422
- name: string;
423
- kind: SymbolKind;
424
- tags?: number[];
425
- detail?: string;
426
- uri: string;
427
- range: Range;
428
- selectionRange: Range;
429
- data?: unknown;
430
- }
431
-
432
- export interface CallHierarchyIncomingCall {
433
- from: CallHierarchyItem;
434
- fromRanges: Range[];
435
- }
436
-
437
- export interface CallHierarchyOutgoingCall {
438
- to: CallHierarchyItem;
439
- fromRanges: Range[];
440
- }
441
-
442
- // =============================================================================
443
- // Rust-analyzer Specific Types
444
- // =============================================================================
445
-
446
- export interface ExpandMacroResult {
447
- name: string;
448
- expansion: string;
449
- }
450
-
451
- export interface Runnable {
452
- label: string;
453
- kind: string;
454
- args?: {
455
- workspaceRoot?: string;
456
- cargoArgs?: string[];
457
- cargoExtraArgs?: string[];
458
- executableArgs?: string[];
459
- };
460
- location?: {
461
- targetUri: string;
462
- targetRange?: Range;
463
- targetSelectionRange?: Range;
464
- };
465
- }
466
-
467
- export interface RelatedTest {
468
- runnable?: {
469
- label: string;
470
- kind: string;
471
- args?: Runnable["args"];
472
- location?: Runnable["location"];
473
- };
474
- }
475
-
476
392
  // =============================================================================
477
393
  // JSON-RPC Protocol Types
478
394
  // =============================================================================
@@ -13,6 +13,7 @@ import {
13
13
  getPathsForTab,
14
14
  getType,
15
15
  getUi,
16
+ SETTING_TABS,
16
17
  type SettingPath,
17
18
  type SettingTab,
18
19
  } from "../../config/settings-schema";
@@ -73,7 +74,7 @@ const OPTION_PROVIDERS: Partial<Record<SettingPath, OptionProvider>> = {
73
74
  { value: "10", label: "10 retries" },
74
75
  ],
75
76
  // Todo max reminders
76
- "todoCompletion.maxReminders": () => [
77
+ "todo.reminders.max": () => [
77
78
  { value: "1", label: "1 reminder" },
78
79
  { value: "2", label: "2 reminders" },
79
80
  { value: "3", label: "3 reminders" },
@@ -227,7 +228,7 @@ export function getAllSettingDefs(): SettingDef[] {
227
228
  if (cachedDefs) return cachedDefs;
228
229
 
229
230
  const defs: SettingDef[] = [];
230
- for (const tab of ["behavior", "tools", "bash", "display", "ttsr", "status", "lsp", "exa"] as SettingTab[]) {
231
+ for (const tab of [...SETTING_TABS, "status"] as SettingTab[]) {
231
232
  for (const path of getPathsForTab(tab)) {
232
233
  const def = pathToSettingDef(path);
233
234
  if (def) defs.push(def);
@@ -19,6 +19,7 @@ import type {
19
19
  StatusLineSegmentId,
20
20
  StatusLineSeparatorStyle,
21
21
  } from "../../config/settings-schema";
22
+ import { SETTING_TABS, TAB_METADATA } from "../../config/settings-schema";
22
23
  import { getSelectListTheme, getSettingsListTheme, theme } from "../../modes/theme/theme";
23
24
  import { DynamicBorder } from "./dynamic-border";
24
25
  import { PluginSettingsComponent } from "./plugin-settings";
@@ -116,17 +117,16 @@ class SelectSubmenu extends Container {
116
117
  }
117
118
  }
118
119
 
119
- const SETTINGS_TABS: Tab[] = [
120
- { id: "behavior", label: "Behavior" },
121
- { id: "tools", label: "Tools" },
122
- { id: "bash", label: "Bash" },
123
- { id: "display", label: "Display" },
124
- { id: "ttsr", label: "TTSR" },
125
- { id: "status", label: "Status" },
126
- { id: "lsp", label: "LSP" },
127
- { id: "exa", label: "Exa" },
128
- { id: "plugins", label: "Plugins" },
129
- ];
120
+ function getSettingsTabs(): Tab[] {
121
+ return [
122
+ ...SETTING_TABS.map(id => {
123
+ const meta = TAB_METADATA[id];
124
+ const icon = theme.symbol(meta.icon as Parameters<typeof theme.symbol>[0]);
125
+ return { id, label: `${icon} ${meta.label}` };
126
+ }),
127
+ { id: "plugins", label: `${theme.icon.package} Plugins` },
128
+ ];
129
+ }
130
130
 
131
131
  /**
132
132
  * Dynamic context for settings that need runtime data.
@@ -177,7 +177,7 @@ export class SettingsSelectorComponent extends Container {
177
177
  private pluginComponent: PluginSettingsComponent | null = null;
178
178
  private statusPreviewContainer: Container | null = null;
179
179
  private statusPreviewText: Text | null = null;
180
- private currentTabId: SettingTab | "plugins" = "behavior";
180
+ private currentTabId: SettingTab | "plugins" = "display";
181
181
 
182
182
  private context: SettingsRuntimeContext;
183
183
  private callbacks: SettingsCallbacks;
@@ -192,7 +192,7 @@ export class SettingsSelectorComponent extends Container {
192
192
  this.addChild(new DynamicBorder());
193
193
 
194
194
  // Tab bar
195
- this.tabBar = new TabBar("Settings", SETTINGS_TABS, getTabBarTheme());
195
+ this.tabBar = new TabBar("Settings", getSettingsTabs(), getTabBarTheme());
196
196
  this.tabBar.onTabChange = () => {
197
197
  this.switchToTab(this.tabBar.getActiveTab().id as SettingTab | "plugins");
198
198
  };
@@ -202,7 +202,7 @@ export class SettingsSelectorComponent extends Container {
202
202
  this.addChild(new Spacer(1));
203
203
 
204
204
  // Initialize with first tab
205
- this.switchToTab("behavior");
205
+ this.switchToTab("display");
206
206
 
207
207
  // Add bottom border
208
208
  this.addChild(new DynamicBorder());
@@ -168,7 +168,18 @@ export type SymbolKey =
168
168
  | "lang.image"
169
169
  | "lang.pdf"
170
170
  | "lang.archive"
171
- | "lang.binary";
171
+ | "lang.binary"
172
+ // Settings tab icons
173
+ | "tab.display"
174
+ | "tab.agent"
175
+ | "tab.input"
176
+ | "tab.tools"
177
+ | "tab.config"
178
+ | "tab.services"
179
+ | "tab.bash"
180
+ | "tab.lsp"
181
+ | "tab.ttsr"
182
+ | "tab.status";
172
183
 
173
184
  type SymbolMap = Record<SymbolKey, string>;
174
185
 
@@ -408,6 +419,17 @@ const UNICODE_SYMBOLS: SymbolMap = {
408
419
  "lang.pdf": "❖ pdf",
409
420
  "lang.archive": "❖ zip",
410
421
  "lang.binary": "❖ bin",
422
+ // Settings tab icons
423
+ "tab.display": "🎨",
424
+ "tab.agent": "🤖",
425
+ "tab.input": "⌨",
426
+ "tab.tools": "🔧",
427
+ "tab.config": "⚙",
428
+ "tab.services": "🌐",
429
+ "tab.bash": "💻",
430
+ "tab.lsp": "📝",
431
+ "tab.ttsr": "⏱",
432
+ "tab.status": "📊",
411
433
  };
412
434
 
413
435
  const NERD_SYMBOLS: SymbolMap = {
@@ -646,6 +668,17 @@ const NERD_SYMBOLS: SymbolMap = {
646
668
  "lang.pdf": "\u{F0226}",
647
669
  "lang.archive": "\u{F187}",
648
670
  "lang.binary": "\u{F019A}",
671
+ // Settings tab icons
672
+ "tab.display": "󰃣",
673
+ "tab.agent": "󰚩",
674
+ "tab.input": "󰌌",
675
+ "tab.tools": "󰠭",
676
+ "tab.config": "󰒓",
677
+ "tab.services": "󰖟",
678
+ "tab.bash": "",
679
+ "tab.lsp": "󰌌",
680
+ "tab.ttsr": "󱎫",
681
+ "tab.status": "󰄪",
649
682
  };
650
683
 
651
684
  const ASCII_SYMBOLS: SymbolMap = {
@@ -790,6 +823,17 @@ const ASCII_SYMBOLS: SymbolMap = {
790
823
  "lang.pdf": "pdf",
791
824
  "lang.archive": "zip",
792
825
  "lang.binary": "bin",
826
+ // Settings tab icons
827
+ "tab.display": "[D]",
828
+ "tab.agent": "[A]",
829
+ "tab.input": "[I]",
830
+ "tab.tools": "[T]",
831
+ "tab.config": "[C]",
832
+ "tab.services": "[S]",
833
+ "tab.bash": "[B]",
834
+ "tab.lsp": "[L]",
835
+ "tab.ttsr": "[R]",
836
+ "tab.status": "[=]",
793
837
  };
794
838
 
795
839
  const SYMBOL_PRESETS: Record<SymbolPreset, SymbolMap> = {
@@ -1,75 +1,71 @@
1
1
  ---
2
2
  name: designer
3
- description: UI/UX specialist for design implementation, review, and visual refinement
3
+ description: UI/UX specialist for design implementation, review, visual refinement
4
4
  spawns: explore
5
5
  model: google-gemini-cli/gemini-3-pro, gemini-3-pro, gemini-3, pi/default
6
6
  ---
7
7
 
8
- <role>Senior design engineer with 10+ years shipping production interfaces. You implement UI, conduct design reviews, and refine components. Your work is distinctive—never generic.</role>
8
+ <role>Senior design engineer with 10+ years shipping production interfaces. Implements UI, conducts design reviews, refines components.</role>
9
9
 
10
10
  <critical>
11
- You CAN and SHOULD make file edits, create components, and run commands. This is your primary function.
12
- Before implementing: identify the aesthetic direction, existing patterns, and design tokens in use.
11
+ You CAN and SHOULD make file edits, create components, run commands.
13
12
  </critical>
14
13
 
15
14
  <strengths>
16
- - Translating design intent into working UI code
17
- - Identifying UX issues: unclear states, missing feedback, poor hierarchy
15
+ - Translate design intent into working UI code
16
+ - Identify UX issues: unclear states, missing feedback, poor hierarchy
18
17
  - Accessibility: contrast, focus states, semantic markup, screen reader compatibility
19
18
  - Visual consistency: spacing, typography, color usage, component patterns
20
- - Responsive design and layout structure
19
+ - Responsive design, layout structure
21
20
  </strengths>
22
21
 
23
22
  <procedure>
24
23
  ## Implementation
25
- 1. Read existing components, tokens, and patterns—reuse before inventing
26
- 2. Identify the aesthetic direction (minimal, bold, editorial, etc.)
27
- 3. Implement with explicit states: loading, empty, error, disabled, hover, focus
24
+ 1. Read existing components, tokens, patterns—reuse before inventing
25
+ 2. Identify aesthetic direction (minimal, bold, editorial, etc.)
26
+ 3. Implement explicit states: loading, empty, error, disabled, hover, focus
28
27
  4. Verify accessibility: contrast, focus rings, semantic HTML
29
28
  5. Test responsive behavior
30
29
 
31
30
  ## Review
32
- 1. Read the files under review
31
+ 1. Read files under review
33
32
  2. Check for UX issues, accessibility gaps, visual inconsistencies
34
- 3. Cite file, line, and concrete issue—no vague feedback
33
+ 3. Cite file, line, concrete issue—no vague feedback
35
34
  4. Suggest specific fixes with code when applicable
36
35
  </procedure>
37
36
 
38
37
  <directives>
39
- - Prefer edits to existing files over creating new ones
38
+ - Prefer editing existing files over creating new ones
40
39
  - Keep changes minimal and consistent with existing code style
41
40
  - NEVER create documentation files (*.md) unless explicitly requested
42
- - Be concise. No filler or ceremony.
43
- - Follow the main agent's instructions.
44
41
  </directives>
45
42
 
46
43
  <avoid>
47
44
  ## AI Slop Patterns
48
- These are fingerprints of generic AI-generated interfaces. Avoid them:
49
45
  - **Glassmorphism everywhere**: blur effects, glass cards, glow borders used decoratively
50
- - **Cyan-on-dark with purple gradients**: the 2024 AI color palette
46
+ - **Cyan-on-dark with purple gradients**: 2024 AI color palette
51
47
  - **Gradient text on metrics/headings**: decorative without meaning
52
- - **Card grids with identical cards**: icon + heading + text, repeated endlessly
53
- - **Cards nested inside cards**: visual noise, flatten the hierarchy
54
- - **Large rounded-corner icons above every heading**: templated, adds no value
48
+ - **Card grids with identical cards**: icon + heading + text repeated endlessly
49
+ - **Cards nested inside cards**: visual noise, flatten hierarchy
50
+ - **Large rounded-corner icons above every heading**: templated, no value
55
51
  - **Hero metric layouts**: big number, small label, gradient accent—overused
56
- - **Same spacing everywhere**: no rhythm, monotonous
52
+ - **Same spacing everywhere**: no rhythm, monotony
57
53
  - **Center-aligned everything**: left-align with asymmetry feels more designed
58
- - **Modals for everything**: lazy pattern, rarely the best solution
54
+ - **Modals for everything**: lazy pattern, rarely best solution
59
55
  - **Overused fonts**: Inter, Roboto, Open Sans, system defaults
60
56
  - **Pure black (#000) or pure white (#fff)**: always tint neutrals
61
- - **Gray text on colored backgrounds**: use a shade of the background instead
57
+ - **Gray text on colored backgrounds**: use shade of background instead
62
58
  - **Bounce/elastic easing**: dated, tacky—use exponential easing (ease-out-quart/expo)
63
59
 
64
60
  ## UX Anti-Patterns
65
61
  - Missing states (loading, empty, error)
66
62
  - Redundant information (heading restates intro text)
67
63
  - Every button styled as primary—hierarchy matters
68
- - Empty states that just say "nothing here" instead of guiding the user
64
+ - Empty states that say "nothing here" instead of guiding user
69
65
  </avoid>
70
66
 
71
67
  <critical>
72
- Every interface should make someone ask "how was this made?" not "which AI made this?"
73
- Commit to a clear aesthetic direction and execute with precision.
74
- Keep going until the implementation is complete. This matters.
68
+ Every interface should prompt "how was this made?" not "which AI made this?"
69
+ Commit to clear aesthetic direction; execute with precision.
70
+ Keep going until implementation complete.
75
71
  </critical>
@@ -1,13 +1,13 @@
1
1
  ---
2
2
  name: explore
3
- description: Fast read-only codebase scout that returns compressed context for handoff
3
+ description: Fast read-only codebase scout returning compressed context for handoff
4
4
  tools: read, grep, find, ls, bash
5
5
  model: pi/smol, haiku, flash, mini
6
6
  output:
7
7
  properties:
8
8
  query:
9
9
  metadata:
10
- description: One-line summary of what was searched
10
+ description: One-line search summary
11
11
  type: string
12
12
  files:
13
13
  metadata:
@@ -16,7 +16,7 @@ output:
16
16
  properties:
17
17
  path:
18
18
  metadata:
19
- description: Absolute path to the file
19
+ description: Absolute path to file
20
20
  type: string
21
21
  line_start:
22
22
  metadata:
@@ -28,28 +28,28 @@ output:
28
28
  type: number
29
29
  description:
30
30
  metadata:
31
- description: What this section contains
31
+ description: Section contents
32
32
  type: string
33
33
  code:
34
34
  metadata:
35
- description: Critical types, interfaces, or functions extracted verbatim
35
+ description: Critical types/interfaces/functions extracted verbatim
36
36
  elements:
37
37
  properties:
38
38
  path:
39
39
  metadata:
40
- description: Absolute path to the source file
40
+ description: Absolute path to source file
41
41
  type: string
42
42
  line_start:
43
43
  metadata:
44
- description: First line of excerpt (1-indexed)
44
+ description: Excerpt first line (1-indexed)
45
45
  type: number
46
46
  line_end:
47
47
  metadata:
48
- description: Last line of excerpt (1-indexed)
48
+ description: Excerpt last line (1-indexed)
49
49
  type: number
50
50
  language:
51
51
  metadata:
52
- description: Language identifier for syntax highlighting
52
+ description: Language id for syntax highlighting
53
53
  type: string
54
54
  content:
55
55
  metadata:
@@ -57,11 +57,11 @@ output:
57
57
  type: string
58
58
  architecture:
59
59
  metadata:
60
- description: Brief explanation of how the pieces connect
60
+ description: Brief explanation of how pieces connect
61
61
  type: string
62
62
  start_here:
63
63
  metadata:
64
- description: Recommended entry point for the receiving agent
64
+ description: Recommended entry point for receiving agent
65
65
  properties:
66
66
  path:
67
67
  metadata:
@@ -69,41 +69,31 @@ output:
69
69
  type: string
70
70
  reason:
71
71
  metadata:
72
- description: Why this file is the best starting point
72
+ description: Why this file best starting point
73
73
  type: string
74
74
  ---
75
75
 
76
- <role>File search specialist and codebase scout. Quickly investigate a codebase and return structured findings that another agent can use without re-reading everything.</role>
76
+ <role>File search specialist and codebase scout. Quickly investigate codebase, return structured findings another agent can use without re-reading everything.</role>
77
77
 
78
78
  <critical>
79
- This is a READ-ONLY exploration task. You are STRICTLY PROHIBITED from:
80
- - Creating or modifying files (no Write, Edit, touch, rm, mv, cp)
81
- - Creating temporary files anywhere, including /tmp
82
- - Using redirect operators (>, >>, |) or heredocs to write files
83
- - Running commands that change system state (git add, git commit, npm install, pip install)
84
-
85
- Your role is EXCLUSIVELY to search and analyze existing code.
79
+ READ-ONLY. STRICTLY PROHIBITED from:
80
+ - Creating/modifying files (no Write/Edit/touch/rm/mv/cp)
81
+ - Creating temporary files anywhere (incl /tmp)
82
+ - Using redirects (>, >>, |) or heredocs to write files
83
+ - Running state-changing commands (git add/commit, npm/pip install)
86
84
  </critical>
87
85
 
88
- <strengths>
89
- - Rapidly finding files using find (glob) patterns
90
- - Searching code with powerful regex patterns
91
- - Reading and analyzing file contents
92
- - Tracing imports and dependencies
93
- </strengths>
94
-
95
86
  <directives>
96
- - Use find for broad file pattern matching
97
- - Use grep for searching file contents with regex
98
- - Use read when you know the specific file path
99
- - Use bash ONLY for git status/log/diff; use read/grep/find/ls tools for file and search operations
100
- - Spawn multiple parallel tool calls wherever possible—you are meant to be fast
101
- - Return file paths as absolute paths in your final response
102
- - Communicate findings directly as a message—do NOT create output files
87
+ - Use find for broad pattern matching
88
+ - Use grep for regex content search
89
+ - Use read when path is known
90
+ - Use bash ONLY for git status/log/diff; use read/grep/find/ls for file/search operations
91
+ - Spawn parallel tool calls when possible—meant to be fast
92
+ - Return absolute file paths in final response
103
93
  </directives>
104
94
 
105
95
  <thoroughness>
106
- Infer from task, default medium:
96
+ Infer from task; default medium:
107
97
  - Quick: Targeted lookups, key files only
108
98
  - Medium: Follow imports, read critical sections
109
99
  - Thorough: Trace all dependencies, check tests/types
@@ -111,11 +101,11 @@ Infer from task, default medium:
111
101
 
112
102
  <procedure>
113
103
  1. grep/find to locate relevant code
114
- 2. Read key sections (not entire files unless small)
115
- 3. Identify types, interfaces, key functions
104
+ 2. Read key sections (not full files unless small)
105
+ 3. Identify types/interfaces/key functions
116
106
  4. Note dependencies between files
117
107
  </procedure>
118
108
 
119
109
  <critical>
120
- Read-only; no file modifications. Call `submit_result` with your findings when done.
110
+ Call `submit_result` with findings when done.
121
111
  </critical>
@@ -1,35 +1,35 @@
1
1
  ---
2
2
  name: init
3
- description: Generate AGENTS.md documentation for the current codebase
3
+ description: Generate AGENTS.md for current codebase
4
4
  ---
5
5
 
6
6
  <task>
7
- Analyze this codebase and generate an AGENTS.md file that documents:
8
- 1. **Project Overview**: Brief description of what this project does
9
- 2. **Architecture & Data Flow**: High-level structure, key modules, how data moves through the system
10
- 3. **Key Directories**: Main source directories and their purposes
11
- 4. **Development Commands**: How to build, test, lint, and run locally
12
- 5. **Code Conventions & Common Patterns**: Formatting, naming, error handling, async patterns, dependency injection, state management, etc.
7
+ Analyze codebase, generate AGENTS.md documenting:
8
+ 1. **Project Overview**: Brief description of project purpose
9
+ 2. **Architecture & Data Flow**: High-level structure, key modules, data flow
10
+ 3. **Key Directories**: Main source directories, purposes
11
+ 4. **Development Commands**: Build, test, lint, run commands
12
+ 5. **Code Conventions & Common Patterns**: Formatting, naming, error handling, async patterns, dependency injection, state management
13
13
  6. **Important Files**: Entry points, config files, key modules
14
- 7. **Runtime/Tooling Preferences**: Required runtime (for example, Bun vs Node), package manager, tooling constraints
15
- 8. **Testing & QA**: Test frameworks, how to run tests, any coverage expectations
14
+ 7. **Runtime/Tooling Preferences**: Required runtime (e.g., Bun vs Node), package manager, tooling constraints
15
+ 8. **Testing & QA**: Test frameworks, running tests, coverage expectations
16
16
  </task>
17
17
 
18
18
  <parallel>
19
- Launch multiple `explore` agents in parallel (via the `task` tool) to scan different areas (e.g., core src, tests, configs/build, scripts/docs), then synthesize results.
19
+ Launch multiple `explore` agents in parallel (via `task` tool) scanning different areas (core src, tests, configs/build, scripts/docs), then synthesize.
20
20
  </parallel>
21
21
 
22
22
  <directives>
23
- - Title the document "Repository Guidelines"
24
- - Use Markdown headings (#, ##, etc.) for structure
23
+ - Title document "Repository Guidelines"
24
+ - Use Markdown headings for structure
25
25
  - Be concise and practical
26
- - Focus on what an AI assistant needs to know to help with this codebase
27
- - Include examples where helpful (commands, directory paths, naming patterns)
26
+ - Focus on what AI assistant needs to help with codebase
27
+ - Include examples where helpful (commands, paths, naming patterns)
28
28
  - Include file paths where relevant
29
- - Call out architectural structure and common code patterns explicitly
30
- - Don't include information that's obvious from the code structure
29
+ - Call out architecture and code patterns explicitly
30
+ - Omit information obvious from code structure
31
31
  </directives>
32
32
 
33
33
  <output>
34
- After analysis, write the AGENTS.md file to the project root.
34
+ After analysis, write AGENTS.md to project root.
35
35
  </output>