@aragon-agent/cli 0.6.29 → 0.6.32
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/CHANGELOG.md +2223 -2103
- package/README.md +2957 -2759
- package/dist/agent/controller.d.ts +46 -0
- package/dist/agent/controller.js +175 -7
- package/dist/agent/job-notices.d.ts +143 -0
- package/dist/agent/job-notices.js +182 -0
- package/dist/agent/project-guidance-prompt.js +20 -20
- package/dist/agent/reducer.d.ts +21 -1
- package/dist/agent/reducer.js +7 -0
- package/dist/agent/system-prompt.d.ts +12 -0
- package/dist/agent/system-prompt.js +2 -0
- package/dist/cli.js +399 -62
- package/dist/commands/builtins.js +27 -8
- package/dist/commands/perf.d.ts +79 -2
- package/dist/commands/perf.js +51 -3
- package/dist/commands/registry.d.ts +6 -0
- package/dist/config/cli-commands.d.ts +27 -0
- package/dist/config/cli-commands.js +54 -1
- package/dist/config/env.js +42 -0
- package/dist/config/load.d.ts +3 -1
- package/dist/config/load.js +61 -1
- package/dist/config/schema.d.ts +100 -0
- package/dist/config/schema.js +43 -0
- package/dist/config/store.js +14 -1
- package/dist/config/ui-state.d.ts +9 -0
- package/dist/config/ui-state.js +9 -0
- package/dist/exec/events.d.ts +29 -3
- package/dist/exec/events.js +3 -12
- package/dist/exec/runner.d.ts +24 -0
- package/dist/exec/runner.js +79 -0
- package/dist/input/cursor-report.d.ts +61 -0
- package/dist/input/cursor-report.js +97 -0
- package/dist/input/stdin-filter.d.ts +22 -0
- package/dist/input/stdin-filter.js +48 -3
- package/dist/proc/limits.d.ts +76 -2
- package/dist/proc/limits.js +83 -2
- package/dist/proc/log-mirror.d.ts +59 -0
- package/dist/proc/log-mirror.js +203 -0
- package/dist/proc/log-ring.d.ts +22 -0
- package/dist/proc/log-ring.js +20 -1
- package/dist/proc/notices.d.ts +57 -0
- package/dist/proc/notices.js +101 -0
- package/dist/proc/progress.d.ts +40 -0
- package/dist/proc/progress.js +135 -0
- package/dist/proc/prompt.d.ts +24 -2
- package/dist/proc/prompt.js +51 -2
- package/dist/proc/supervisor.d.ts +35 -2
- package/dist/proc/supervisor.js +142 -43
- package/dist/proc/types.d.ts +89 -1
- package/dist/proc/wait.d.ts +57 -0
- package/dist/proc/wait.js +133 -0
- package/dist/session/persist.js +3 -1
- package/dist/session/validate-session.js +17 -0
- package/dist/tools/bash-tool.d.ts +12 -1
- package/dist/tools/bash-tool.js +100 -13
- package/dist/tools/index.d.ts +26 -2
- package/dist/tools/index.js +43 -2
- package/dist/tools/job-tools.d.ts +54 -0
- package/dist/tools/job-tools.js +329 -0
- package/dist/tools/proc-tools.d.ts +1 -1
- package/dist/tools/proc-tools.js +49 -17
- package/dist/ui/ActivityLine.js +7 -0
- package/dist/ui/App.d.ts +11 -1
- package/dist/ui/App.js +181 -63
- package/dist/ui/ScrollbackShell.d.ts +54 -0
- package/dist/ui/ScrollbackShell.js +15 -0
- package/dist/ui/StatusBar.d.ts +5 -0
- package/dist/ui/StatusBar.js +1 -0
- package/dist/ui/Transcript.d.ts +14 -0
- package/dist/ui/Transcript.js +14 -2
- package/dist/ui/entries/ServiceCard.d.ts +17 -1
- package/dist/ui/entries/ServiceCard.js +39 -4
- package/dist/ui/frame-differ.d.ts +12 -0
- package/dist/ui/layout/status-layout.d.ts +13 -1
- package/dist/ui/layout/status-layout.js +10 -0
- package/dist/ui/layout/virtual-window.js +14 -1
- package/dist/ui/overlays/HelpOverlay.d.ts +1 -1
- package/dist/ui/overlays/HelpOverlay.js +21 -3
- package/dist/ui/run-status-row.d.ts +12 -0
- package/dist/ui/screen.d.ts +29 -0
- package/dist/ui/screen.js +40 -0
- package/dist/ui/scrollback/LiveTail.d.ts +64 -0
- package/dist/ui/scrollback/LiveTail.js +27 -0
- package/dist/ui/scrollback/band.d.ts +105 -0
- package/dist/ui/scrollback/band.js +109 -0
- package/dist/ui/scrollback/budget.d.ts +72 -0
- package/dist/ui/scrollback/budget.js +81 -0
- package/dist/ui/scrollback/canvas.d.ts +99 -0
- package/dist/ui/scrollback/canvas.js +113 -0
- package/dist/ui/scrollback/cursor-probe.d.ts +71 -0
- package/dist/ui/scrollback/cursor-probe.js +133 -0
- package/dist/ui/scrollback/drain.d.ts +32 -0
- package/dist/ui/scrollback/drain.js +64 -0
- package/dist/ui/scrollback/exit-summary.d.ts +23 -0
- package/dist/ui/scrollback/exit-summary.js +25 -0
- package/dist/ui/scrollback/limits.d.ts +74 -0
- package/dist/ui/scrollback/limits.js +74 -0
- package/dist/ui/scrollback/live-preview.d.ts +26 -0
- package/dist/ui/scrollback/live-preview.js +106 -0
- package/dist/ui/scrollback/renderer.d.ts +38 -0
- package/dist/ui/scrollback/renderer.js +158 -0
- package/dist/ui/scrollback/scrollback-writer.d.ts +162 -0
- package/dist/ui/scrollback/scrollback-writer.js +549 -0
- package/dist/ui/scrollback/settled-boundary.d.ts +42 -0
- package/dist/ui/scrollback/settled-boundary.js +106 -0
- package/dist/ui/scrollback/use-scrollback-view.d.ts +103 -0
- package/dist/ui/scrollback/use-scrollback-view.js +294 -0
- package/dist/ui/scrollback/writer-shapes.d.ts +127 -0
- package/dist/ui/scrollback/writer-shapes.js +159 -0
- package/dist/ui/stdout-frame-writer.js +12 -2
- package/dist/ui/terminal-plan.d.ts +52 -0
- package/dist/ui/terminal-plan.js +49 -0
- package/dist/ui/transcript-text.d.ts +11 -0
- package/dist/ui/transcript-text.js +21 -7
- package/dist/ui/use-startup-notices.d.ts +12 -1
- package/dist/ui/use-startup-notices.js +28 -2
- package/package.json +3 -3
- package/skills/project-indexer/SKILL.md +163 -163
- package/skills/project-indexer/templates/cleancode-overrides.md +46 -46
- package/skills/project-indexer/templates/cleancode-template.md +94 -94
- package/skills/project-indexer/templates/config-template.md +69 -69
- package/skills/project-indexer/templates/index-template.md +129 -129
- package/skills/skill-creator/SKILL.md +96 -96
|
@@ -1,69 +1,69 @@
|
|
|
1
|
-
# Index Configuration
|
|
2
|
-
|
|
3
|
-
> Configuration for project-indexer. Edit this file to customize index generation.
|
|
4
|
-
|
|
5
|
-
## Excluded Directories
|
|
6
|
-
|
|
7
|
-
Directories to skip during indexing:
|
|
8
|
-
|
|
9
|
-
- node_modules
|
|
10
|
-
- .git
|
|
11
|
-
- dist
|
|
12
|
-
- build
|
|
13
|
-
- __pycache__
|
|
14
|
-
- .venv
|
|
15
|
-
- venv
|
|
16
|
-
- vendor
|
|
17
|
-
- coverage
|
|
18
|
-
- .next
|
|
19
|
-
- .nuxt
|
|
20
|
-
- .cache
|
|
21
|
-
- target
|
|
22
|
-
- bin
|
|
23
|
-
- obj
|
|
24
|
-
- .idea
|
|
25
|
-
- .vscode
|
|
26
|
-
|
|
27
|
-
## Priority Directories
|
|
28
|
-
|
|
29
|
-
Directories to index in detail (leave empty for auto-detection):
|
|
30
|
-
|
|
31
|
-
- src/
|
|
32
|
-
- lib/
|
|
33
|
-
- app/
|
|
34
|
-
- core/
|
|
35
|
-
|
|
36
|
-
## Tech Stack
|
|
37
|
-
|
|
38
|
-
Detected or specified technology stack:
|
|
39
|
-
|
|
40
|
-
- **Frontend:** {React | Vue | Angular | Svelte | Next.js | Nuxt | etc.}
|
|
41
|
-
- **Backend:** {Express | FastAPI | Django | Rails | Spring | etc.}
|
|
42
|
-
- **Language:** {TypeScript | JavaScript | Python | Go | etc.}
|
|
43
|
-
|
|
44
|
-
## Index Settings
|
|
45
|
-
|
|
46
|
-
- **Generated:** {YYYY-MM-DD HH:MM:SS}
|
|
47
|
-
- **Project Root:** {/path/to/project}
|
|
48
|
-
- **Index Version:** 1.0
|
|
49
|
-
- **Total Files Indexed:** {N}
|
|
50
|
-
- **Total Symbols Extracted:** {N}
|
|
51
|
-
|
|
52
|
-
## Clean Code Settings
|
|
53
|
-
|
|
54
|
-
- Enabled: {Yes | No}
|
|
55
|
-
- Preset: {strict | relaxed | custom | disabled}
|
|
56
|
-
- MAX_FILE_LINES: 1000
|
|
57
|
-
- MAX_METHOD_LINES: 60
|
|
58
|
-
- MAX_FUNCTION_PARAMS: 5
|
|
59
|
-
- MAX_CYCLOMATIC: 10
|
|
60
|
-
- MAX_LINE_LENGTH: 100
|
|
61
|
-
- MAX_NESTING_DEPTH: 4
|
|
62
|
-
|
|
63
|
-
## Regeneration Notes
|
|
64
|
-
|
|
65
|
-
Notes for future regeneration:
|
|
66
|
-
|
|
67
|
-
- {Any special considerations}
|
|
68
|
-
- {Files that need manual review}
|
|
69
|
-
- {Known limitations}
|
|
1
|
+
# Index Configuration
|
|
2
|
+
|
|
3
|
+
> Configuration for project-indexer. Edit this file to customize index generation.
|
|
4
|
+
|
|
5
|
+
## Excluded Directories
|
|
6
|
+
|
|
7
|
+
Directories to skip during indexing:
|
|
8
|
+
|
|
9
|
+
- node_modules
|
|
10
|
+
- .git
|
|
11
|
+
- dist
|
|
12
|
+
- build
|
|
13
|
+
- __pycache__
|
|
14
|
+
- .venv
|
|
15
|
+
- venv
|
|
16
|
+
- vendor
|
|
17
|
+
- coverage
|
|
18
|
+
- .next
|
|
19
|
+
- .nuxt
|
|
20
|
+
- .cache
|
|
21
|
+
- target
|
|
22
|
+
- bin
|
|
23
|
+
- obj
|
|
24
|
+
- .idea
|
|
25
|
+
- .vscode
|
|
26
|
+
|
|
27
|
+
## Priority Directories
|
|
28
|
+
|
|
29
|
+
Directories to index in detail (leave empty for auto-detection):
|
|
30
|
+
|
|
31
|
+
- src/
|
|
32
|
+
- lib/
|
|
33
|
+
- app/
|
|
34
|
+
- core/
|
|
35
|
+
|
|
36
|
+
## Tech Stack
|
|
37
|
+
|
|
38
|
+
Detected or specified technology stack:
|
|
39
|
+
|
|
40
|
+
- **Frontend:** {React | Vue | Angular | Svelte | Next.js | Nuxt | etc.}
|
|
41
|
+
- **Backend:** {Express | FastAPI | Django | Rails | Spring | etc.}
|
|
42
|
+
- **Language:** {TypeScript | JavaScript | Python | Go | etc.}
|
|
43
|
+
|
|
44
|
+
## Index Settings
|
|
45
|
+
|
|
46
|
+
- **Generated:** {YYYY-MM-DD HH:MM:SS}
|
|
47
|
+
- **Project Root:** {/path/to/project}
|
|
48
|
+
- **Index Version:** 1.0
|
|
49
|
+
- **Total Files Indexed:** {N}
|
|
50
|
+
- **Total Symbols Extracted:** {N}
|
|
51
|
+
|
|
52
|
+
## Clean Code Settings
|
|
53
|
+
|
|
54
|
+
- Enabled: {Yes | No}
|
|
55
|
+
- Preset: {strict | relaxed | custom | disabled}
|
|
56
|
+
- MAX_FILE_LINES: 1000
|
|
57
|
+
- MAX_METHOD_LINES: 60
|
|
58
|
+
- MAX_FUNCTION_PARAMS: 5
|
|
59
|
+
- MAX_CYCLOMATIC: 10
|
|
60
|
+
- MAX_LINE_LENGTH: 100
|
|
61
|
+
- MAX_NESTING_DEPTH: 4
|
|
62
|
+
|
|
63
|
+
## Regeneration Notes
|
|
64
|
+
|
|
65
|
+
Notes for future regeneration:
|
|
66
|
+
|
|
67
|
+
- {Any special considerations}
|
|
68
|
+
- {Files that need manual review}
|
|
69
|
+
- {Known limitations}
|
|
@@ -1,129 +1,129 @@
|
|
|
1
|
-
# Project Index: {project-name}
|
|
2
|
-
|
|
3
|
-
> Auto-generated by project-indexer | Last updated: {YYYY-MM-DD}
|
|
4
|
-
|
|
5
|
-
## Project Overview
|
|
6
|
-
|
|
7
|
-
- **Type:** {Frontend | Backend | Fullstack | Library | CLI | Monorepo}
|
|
8
|
-
- **Languages:** {TypeScript (70%), Python (30%)}
|
|
9
|
-
- **Frameworks:** {Next.js, FastAPI, etc.}
|
|
10
|
-
- **Entry Points:** `{src/index.ts}`, `{api/main.py}`
|
|
11
|
-
|
|
12
|
-
---
|
|
13
|
-
|
|
14
|
-
## Feature Map
|
|
15
|
-
|
|
16
|
-
### {Feature Name} (`{path}/`)
|
|
17
|
-
|
|
18
|
-
Entry: `{entry-file}`
|
|
19
|
-
|
|
20
|
-
{One-line description of this feature area}
|
|
21
|
-
|
|
22
|
-
**Key exports:**
|
|
23
|
-
- `{functionName}({params}): {returnType}` - {description}
|
|
24
|
-
- `{ClassName}` - {description}
|
|
25
|
-
- `{CONSTANT_NAME}` - {description}
|
|
26
|
-
|
|
27
|
-
---
|
|
28
|
-
|
|
29
|
-
### Example: Authentication (`src/auth/`)
|
|
30
|
-
|
|
31
|
-
Entry: `src/auth/index.ts`
|
|
32
|
-
|
|
33
|
-
User authentication, session management, and authorization logic.
|
|
34
|
-
|
|
35
|
-
**Key exports:**
|
|
36
|
-
- `login(credentials: LoginInput): Promise<User>` - Authenticate user with email/password
|
|
37
|
-
- `logout(): void` - Clear session and revoke tokens
|
|
38
|
-
- `useAuth(): AuthContext` - React hook for accessing auth state
|
|
39
|
-
- `withAuth(Component): Component` - HOC for protected routes
|
|
40
|
-
- `AuthProvider` - Context provider for auth state
|
|
41
|
-
|
|
42
|
-
---
|
|
43
|
-
|
|
44
|
-
### Example: API Layer (`src/api/`)
|
|
45
|
-
|
|
46
|
-
Entry: `src/api/client.ts`
|
|
47
|
-
|
|
48
|
-
REST API client with error handling, request interceptors, and response caching.
|
|
49
|
-
|
|
50
|
-
**Key exports:**
|
|
51
|
-
- `apiClient` - Pre-configured axios instance
|
|
52
|
-
- `useQuery<T>(endpoint: string): SWRResponse<T>` - Data fetching hook with caching
|
|
53
|
-
- `useMutation<T>(endpoint: string): MutationResult<T>` - Data mutation hook
|
|
54
|
-
- `ApiError` - Custom error class for API errors
|
|
55
|
-
|
|
56
|
-
---
|
|
57
|
-
|
|
58
|
-
## Module Dependencies
|
|
59
|
-
|
|
60
|
-
```
|
|
61
|
-
{module-a} → {module-b} ({relationship description})
|
|
62
|
-
```
|
|
63
|
-
|
|
64
|
-
Example:
|
|
65
|
-
```
|
|
66
|
-
auth → api (uses apiClient for authentication requests)
|
|
67
|
-
pages → auth, components (imports hooks and UI components)
|
|
68
|
-
api → (standalone, no internal dependencies)
|
|
69
|
-
components → utils (uses helper functions)
|
|
70
|
-
hooks → api, auth (combines data fetching with auth state)
|
|
71
|
-
```
|
|
72
|
-
|
|
73
|
-
---
|
|
74
|
-
|
|
75
|
-
## File Index
|
|
76
|
-
|
|
77
|
-
### {directory}/
|
|
78
|
-
|
|
79
|
-
| File | Description |
|
|
80
|
-
|------|-------------|
|
|
81
|
-
| {filename.ext} | {One-line description} |
|
|
82
|
-
|
|
83
|
-
---
|
|
84
|
-
|
|
85
|
-
### Example: src/auth/
|
|
86
|
-
|
|
87
|
-
| File | Description |
|
|
88
|
-
|------|-------------|
|
|
89
|
-
| index.ts | Module entry point, re-exports public API |
|
|
90
|
-
| login.ts | Login logic, credential validation, token handling |
|
|
91
|
-
| logout.ts | Logout logic, session cleanup, token revocation |
|
|
92
|
-
| session.ts | Session storage, refresh token management |
|
|
93
|
-
| hooks.ts | React hooks: useAuth, useUser, usePermissions |
|
|
94
|
-
| context.tsx | AuthContext and AuthProvider implementation |
|
|
95
|
-
| types.ts | TypeScript types for auth entities |
|
|
96
|
-
| constants.ts | Auth-related constants and configuration |
|
|
97
|
-
|
|
98
|
-
### Example: src/api/
|
|
99
|
-
|
|
100
|
-
| File | Description |
|
|
101
|
-
|------|-------------|
|
|
102
|
-
| client.ts | Axios instance with interceptors and base config |
|
|
103
|
-
| endpoints.ts | API endpoint path constants |
|
|
104
|
-
| types.ts | Request/response type definitions |
|
|
105
|
-
| errors.ts | Custom error classes and error handling utilities |
|
|
106
|
-
| hooks.ts | Data fetching hooks: useQuery, useMutation |
|
|
107
|
-
| cache.ts | Response caching configuration |
|
|
108
|
-
|
|
109
|
-
### Example: src/components/
|
|
110
|
-
|
|
111
|
-
| File | Description |
|
|
112
|
-
|------|-------------|
|
|
113
|
-
| Button.tsx | Reusable button with variants (primary, secondary, ghost) |
|
|
114
|
-
| Modal.tsx | Dialog component with portal and focus trap |
|
|
115
|
-
| Toast.tsx | Notification toast with auto-dismiss |
|
|
116
|
-
| Spinner.tsx | Loading spinner component |
|
|
117
|
-
| Form/index.tsx | Form wrapper with validation context |
|
|
118
|
-
| Form/Input.tsx | Text input with label and error display |
|
|
119
|
-
| Form/Select.tsx | Dropdown select component |
|
|
120
|
-
| Form/Checkbox.tsx | Checkbox with label |
|
|
121
|
-
| Layout/Header.tsx | App header with navigation |
|
|
122
|
-
| Layout/Sidebar.tsx | Collapsible sidebar navigation |
|
|
123
|
-
| Layout/Footer.tsx | App footer |
|
|
124
|
-
|
|
125
|
-
---
|
|
126
|
-
|
|
127
|
-
## Notes
|
|
128
|
-
|
|
129
|
-
{Any additional notes about the project structure, conventions, or important information}
|
|
1
|
+
# Project Index: {project-name}
|
|
2
|
+
|
|
3
|
+
> Auto-generated by project-indexer | Last updated: {YYYY-MM-DD}
|
|
4
|
+
|
|
5
|
+
## Project Overview
|
|
6
|
+
|
|
7
|
+
- **Type:** {Frontend | Backend | Fullstack | Library | CLI | Monorepo}
|
|
8
|
+
- **Languages:** {TypeScript (70%), Python (30%)}
|
|
9
|
+
- **Frameworks:** {Next.js, FastAPI, etc.}
|
|
10
|
+
- **Entry Points:** `{src/index.ts}`, `{api/main.py}`
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## Feature Map
|
|
15
|
+
|
|
16
|
+
### {Feature Name} (`{path}/`)
|
|
17
|
+
|
|
18
|
+
Entry: `{entry-file}`
|
|
19
|
+
|
|
20
|
+
{One-line description of this feature area}
|
|
21
|
+
|
|
22
|
+
**Key exports:**
|
|
23
|
+
- `{functionName}({params}): {returnType}` - {description}
|
|
24
|
+
- `{ClassName}` - {description}
|
|
25
|
+
- `{CONSTANT_NAME}` - {description}
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
### Example: Authentication (`src/auth/`)
|
|
30
|
+
|
|
31
|
+
Entry: `src/auth/index.ts`
|
|
32
|
+
|
|
33
|
+
User authentication, session management, and authorization logic.
|
|
34
|
+
|
|
35
|
+
**Key exports:**
|
|
36
|
+
- `login(credentials: LoginInput): Promise<User>` - Authenticate user with email/password
|
|
37
|
+
- `logout(): void` - Clear session and revoke tokens
|
|
38
|
+
- `useAuth(): AuthContext` - React hook for accessing auth state
|
|
39
|
+
- `withAuth(Component): Component` - HOC for protected routes
|
|
40
|
+
- `AuthProvider` - Context provider for auth state
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
### Example: API Layer (`src/api/`)
|
|
45
|
+
|
|
46
|
+
Entry: `src/api/client.ts`
|
|
47
|
+
|
|
48
|
+
REST API client with error handling, request interceptors, and response caching.
|
|
49
|
+
|
|
50
|
+
**Key exports:**
|
|
51
|
+
- `apiClient` - Pre-configured axios instance
|
|
52
|
+
- `useQuery<T>(endpoint: string): SWRResponse<T>` - Data fetching hook with caching
|
|
53
|
+
- `useMutation<T>(endpoint: string): MutationResult<T>` - Data mutation hook
|
|
54
|
+
- `ApiError` - Custom error class for API errors
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
## Module Dependencies
|
|
59
|
+
|
|
60
|
+
```
|
|
61
|
+
{module-a} → {module-b} ({relationship description})
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
Example:
|
|
65
|
+
```
|
|
66
|
+
auth → api (uses apiClient for authentication requests)
|
|
67
|
+
pages → auth, components (imports hooks and UI components)
|
|
68
|
+
api → (standalone, no internal dependencies)
|
|
69
|
+
components → utils (uses helper functions)
|
|
70
|
+
hooks → api, auth (combines data fetching with auth state)
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
---
|
|
74
|
+
|
|
75
|
+
## File Index
|
|
76
|
+
|
|
77
|
+
### {directory}/
|
|
78
|
+
|
|
79
|
+
| File | Description |
|
|
80
|
+
|------|-------------|
|
|
81
|
+
| {filename.ext} | {One-line description} |
|
|
82
|
+
|
|
83
|
+
---
|
|
84
|
+
|
|
85
|
+
### Example: src/auth/
|
|
86
|
+
|
|
87
|
+
| File | Description |
|
|
88
|
+
|------|-------------|
|
|
89
|
+
| index.ts | Module entry point, re-exports public API |
|
|
90
|
+
| login.ts | Login logic, credential validation, token handling |
|
|
91
|
+
| logout.ts | Logout logic, session cleanup, token revocation |
|
|
92
|
+
| session.ts | Session storage, refresh token management |
|
|
93
|
+
| hooks.ts | React hooks: useAuth, useUser, usePermissions |
|
|
94
|
+
| context.tsx | AuthContext and AuthProvider implementation |
|
|
95
|
+
| types.ts | TypeScript types for auth entities |
|
|
96
|
+
| constants.ts | Auth-related constants and configuration |
|
|
97
|
+
|
|
98
|
+
### Example: src/api/
|
|
99
|
+
|
|
100
|
+
| File | Description |
|
|
101
|
+
|------|-------------|
|
|
102
|
+
| client.ts | Axios instance with interceptors and base config |
|
|
103
|
+
| endpoints.ts | API endpoint path constants |
|
|
104
|
+
| types.ts | Request/response type definitions |
|
|
105
|
+
| errors.ts | Custom error classes and error handling utilities |
|
|
106
|
+
| hooks.ts | Data fetching hooks: useQuery, useMutation |
|
|
107
|
+
| cache.ts | Response caching configuration |
|
|
108
|
+
|
|
109
|
+
### Example: src/components/
|
|
110
|
+
|
|
111
|
+
| File | Description |
|
|
112
|
+
|------|-------------|
|
|
113
|
+
| Button.tsx | Reusable button with variants (primary, secondary, ghost) |
|
|
114
|
+
| Modal.tsx | Dialog component with portal and focus trap |
|
|
115
|
+
| Toast.tsx | Notification toast with auto-dismiss |
|
|
116
|
+
| Spinner.tsx | Loading spinner component |
|
|
117
|
+
| Form/index.tsx | Form wrapper with validation context |
|
|
118
|
+
| Form/Input.tsx | Text input with label and error display |
|
|
119
|
+
| Form/Select.tsx | Dropdown select component |
|
|
120
|
+
| Form/Checkbox.tsx | Checkbox with label |
|
|
121
|
+
| Layout/Header.tsx | App header with navigation |
|
|
122
|
+
| Layout/Sidebar.tsx | Collapsible sidebar navigation |
|
|
123
|
+
| Layout/Footer.tsx | App footer |
|
|
124
|
+
|
|
125
|
+
---
|
|
126
|
+
|
|
127
|
+
## Notes
|
|
128
|
+
|
|
129
|
+
{Any additional notes about the project structure, conventions, or important information}
|
|
@@ -1,96 +1,96 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: skill-creator
|
|
3
|
-
description: Author a new AragonAgent skill. Use when the user asks to save a procedure as a skill, or when you notice you have re-derived the same multi-step process twice in a session.
|
|
4
|
-
version: 1.1.0
|
|
5
|
-
license: MIT
|
|
6
|
-
activation: auto
|
|
7
|
-
keywords: [meta, authoring, skills]
|
|
8
|
-
# Enforced as a per-turn tool ceiling. `edit_file` is here because revising an
|
|
9
|
-
# existing skill is the single most common thing this skill is asked to do —
|
|
10
|
-
# without it, "fix the description on my deploy skill" fails on the first edit.
|
|
11
|
-
allowed-tools:
|
|
12
|
-
- read_file
|
|
13
|
-
- write_file
|
|
14
|
-
- edit_file
|
|
15
|
-
- list_dir
|
|
16
|
-
- skill_create
|
|
17
|
-
---
|
|
18
|
-
|
|
19
|
-
# Skill Creator
|
|
20
|
-
|
|
21
|
-
Write a skill that another model instance will actually reach for at the right
|
|
22
|
-
moment. Most bad skills are not badly written; they are badly *described* and
|
|
23
|
-
badly *scoped*.
|
|
24
|
-
|
|
25
|
-
## When to use
|
|
26
|
-
|
|
27
|
-
- The user says "remember how to do this", "save this as a skill", or similar.
|
|
28
|
-
- You have worked out a non-obvious, repeatable procedure and expect to need it
|
|
29
|
-
again.
|
|
30
|
-
- You notice you have rediscovered the same steps twice in one session.
|
|
31
|
-
|
|
32
|
-
Do **not** create a skill for a one-off task, for something the tools already do
|
|
33
|
-
directly, or for general knowledge the model already has.
|
|
34
|
-
|
|
35
|
-
## The one rule that matters most
|
|
36
|
-
|
|
37
|
-
`description` is the only text a future model sees before deciding whether to
|
|
38
|
-
load your skill. Everything else is invisible until then. So it must answer two
|
|
39
|
-
questions in one or two sentences:
|
|
40
|
-
|
|
41
|
-
1. **What does this do?**
|
|
42
|
-
2. **When should it be used?** — in the words a user would actually type.
|
|
43
|
-
|
|
44
|
-
Compare:
|
|
45
|
-
|
|
46
|
-
- Weak: `Helps with PDFs.`
|
|
47
|
-
- Strong: `Fill, flatten and validate AcroForm PDFs. Use when the task mentions
|
|
48
|
-
PDF forms, field filling, or flattening a fillable PDF.`
|
|
49
|
-
|
|
50
|
-
The second one will be picked up on a task that says "flatten this fillable
|
|
51
|
-
invoice". The first one will not.
|
|
52
|
-
|
|
53
|
-
## Writing the body
|
|
54
|
-
|
|
55
|
-
- Use imperative steps, not background prose. The reader is an agent about to
|
|
56
|
-
act, not a student.
|
|
57
|
-
- Keep the body under about 5 000 characters. It is loaded whole, every time the
|
|
58
|
-
skill is used, so length is a recurring cost paid by every future run.
|
|
59
|
-
- Push long reference material into `reference/*.md` and executable steps into
|
|
60
|
-
`scripts/*`. Those are NOT preloaded — the model reads them on demand with
|
|
61
|
-
`read_file` or runs them with `bash`. That is the whole point of the three
|
|
62
|
-
levels, and it is what makes fifty installed skills cost a few thousand
|
|
63
|
-
characters instead of hundreds of thousands.
|
|
64
|
-
- Say what "done" looks like, and what to do when a step fails.
|
|
65
|
-
|
|
66
|
-
## Things that do not belong in a skill
|
|
67
|
-
|
|
68
|
-
- Hostnames, IP addresses, repository URLs, absolute paths from your machine.
|
|
69
|
-
- API keys, tokens, or anything else secret. Skills are plain files that get
|
|
70
|
-
copied between machines and committed to repositories.
|
|
71
|
-
- Anything that only made sense in the conversation you are in right now.
|
|
72
|
-
|
|
73
|
-
## Steps
|
|
74
|
-
|
|
75
|
-
1. Confirm the scope with the user in one sentence: what the skill does and when
|
|
76
|
-
it fires.
|
|
77
|
-
2. Draft the `description` first and read it back critically. Would a model
|
|
78
|
-
with only that line pick this skill for the task you have in mind?
|
|
79
|
-
3. Write the body as numbered imperative steps.
|
|
80
|
-
4. Split anything long or reusable into `reference/` and `scripts/` entries and
|
|
81
|
-
pass them as `files`.
|
|
82
|
-
5. Call `skill_create` with `name`, `description`, `body`, and any `files`.
|
|
83
|
-
6. Immediately call `skill(name="<your-new-skill>")` to read back what you
|
|
84
|
-
actually wrote. This catches truncated bodies and mangled frontmatter while
|
|
85
|
-
you can still fix them.
|
|
86
|
-
|
|
87
|
-
## Naming
|
|
88
|
-
|
|
89
|
-
Lowercase kebab-case, at most 64 characters: `pdf-forms`, `release-notes`,
|
|
90
|
-
`db-migration-review`. The name becomes a slash command (`/pdf-forms`), so it
|
|
91
|
-
should read as a thing, not as a sentence.
|
|
92
|
-
|
|
93
|
-
If the name collides with a built-in command, the built-in wins and your skill
|
|
94
|
-
is reachable as `/skill:<name>` instead — so avoid `help`, `model`, `settings`,
|
|
95
|
-
`tools`, `clear`, `reset`, `cwd`, `save`, `resume`, `copy`, `theme`, `thinking`,
|
|
96
|
-
`expand`, `skills`, `exit` and `quit`.
|
|
1
|
+
---
|
|
2
|
+
name: skill-creator
|
|
3
|
+
description: Author a new AragonAgent skill. Use when the user asks to save a procedure as a skill, or when you notice you have re-derived the same multi-step process twice in a session.
|
|
4
|
+
version: 1.1.0
|
|
5
|
+
license: MIT
|
|
6
|
+
activation: auto
|
|
7
|
+
keywords: [meta, authoring, skills]
|
|
8
|
+
# Enforced as a per-turn tool ceiling. `edit_file` is here because revising an
|
|
9
|
+
# existing skill is the single most common thing this skill is asked to do —
|
|
10
|
+
# without it, "fix the description on my deploy skill" fails on the first edit.
|
|
11
|
+
allowed-tools:
|
|
12
|
+
- read_file
|
|
13
|
+
- write_file
|
|
14
|
+
- edit_file
|
|
15
|
+
- list_dir
|
|
16
|
+
- skill_create
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
# Skill Creator
|
|
20
|
+
|
|
21
|
+
Write a skill that another model instance will actually reach for at the right
|
|
22
|
+
moment. Most bad skills are not badly written; they are badly *described* and
|
|
23
|
+
badly *scoped*.
|
|
24
|
+
|
|
25
|
+
## When to use
|
|
26
|
+
|
|
27
|
+
- The user says "remember how to do this", "save this as a skill", or similar.
|
|
28
|
+
- You have worked out a non-obvious, repeatable procedure and expect to need it
|
|
29
|
+
again.
|
|
30
|
+
- You notice you have rediscovered the same steps twice in one session.
|
|
31
|
+
|
|
32
|
+
Do **not** create a skill for a one-off task, for something the tools already do
|
|
33
|
+
directly, or for general knowledge the model already has.
|
|
34
|
+
|
|
35
|
+
## The one rule that matters most
|
|
36
|
+
|
|
37
|
+
`description` is the only text a future model sees before deciding whether to
|
|
38
|
+
load your skill. Everything else is invisible until then. So it must answer two
|
|
39
|
+
questions in one or two sentences:
|
|
40
|
+
|
|
41
|
+
1. **What does this do?**
|
|
42
|
+
2. **When should it be used?** — in the words a user would actually type.
|
|
43
|
+
|
|
44
|
+
Compare:
|
|
45
|
+
|
|
46
|
+
- Weak: `Helps with PDFs.`
|
|
47
|
+
- Strong: `Fill, flatten and validate AcroForm PDFs. Use when the task mentions
|
|
48
|
+
PDF forms, field filling, or flattening a fillable PDF.`
|
|
49
|
+
|
|
50
|
+
The second one will be picked up on a task that says "flatten this fillable
|
|
51
|
+
invoice". The first one will not.
|
|
52
|
+
|
|
53
|
+
## Writing the body
|
|
54
|
+
|
|
55
|
+
- Use imperative steps, not background prose. The reader is an agent about to
|
|
56
|
+
act, not a student.
|
|
57
|
+
- Keep the body under about 5 000 characters. It is loaded whole, every time the
|
|
58
|
+
skill is used, so length is a recurring cost paid by every future run.
|
|
59
|
+
- Push long reference material into `reference/*.md` and executable steps into
|
|
60
|
+
`scripts/*`. Those are NOT preloaded — the model reads them on demand with
|
|
61
|
+
`read_file` or runs them with `bash`. That is the whole point of the three
|
|
62
|
+
levels, and it is what makes fifty installed skills cost a few thousand
|
|
63
|
+
characters instead of hundreds of thousands.
|
|
64
|
+
- Say what "done" looks like, and what to do when a step fails.
|
|
65
|
+
|
|
66
|
+
## Things that do not belong in a skill
|
|
67
|
+
|
|
68
|
+
- Hostnames, IP addresses, repository URLs, absolute paths from your machine.
|
|
69
|
+
- API keys, tokens, or anything else secret. Skills are plain files that get
|
|
70
|
+
copied between machines and committed to repositories.
|
|
71
|
+
- Anything that only made sense in the conversation you are in right now.
|
|
72
|
+
|
|
73
|
+
## Steps
|
|
74
|
+
|
|
75
|
+
1. Confirm the scope with the user in one sentence: what the skill does and when
|
|
76
|
+
it fires.
|
|
77
|
+
2. Draft the `description` first and read it back critically. Would a model
|
|
78
|
+
with only that line pick this skill for the task you have in mind?
|
|
79
|
+
3. Write the body as numbered imperative steps.
|
|
80
|
+
4. Split anything long or reusable into `reference/` and `scripts/` entries and
|
|
81
|
+
pass them as `files`.
|
|
82
|
+
5. Call `skill_create` with `name`, `description`, `body`, and any `files`.
|
|
83
|
+
6. Immediately call `skill(name="<your-new-skill>")` to read back what you
|
|
84
|
+
actually wrote. This catches truncated bodies and mangled frontmatter while
|
|
85
|
+
you can still fix them.
|
|
86
|
+
|
|
87
|
+
## Naming
|
|
88
|
+
|
|
89
|
+
Lowercase kebab-case, at most 64 characters: `pdf-forms`, `release-notes`,
|
|
90
|
+
`db-migration-review`. The name becomes a slash command (`/pdf-forms`), so it
|
|
91
|
+
should read as a thing, not as a sentence.
|
|
92
|
+
|
|
93
|
+
If the name collides with a built-in command, the built-in wins and your skill
|
|
94
|
+
is reachable as `/skill:<name>` instead — so avoid `help`, `model`, `settings`,
|
|
95
|
+
`tools`, `clear`, `reset`, `cwd`, `save`, `resume`, `copy`, `theme`, `thinking`,
|
|
96
|
+
`expand`, `skills`, `exit` and `quit`.
|