agent-devkit 0.8.5 → 0.8.9

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 (105) hide show
  1. package/README.md +91 -2
  2. package/dist/main.js +30253 -18977
  3. package/dist/main.js.map +1 -1
  4. package/package.json +2 -1
  5. package/src/assets/agents/profiles.json +5 -5
  6. package/src/assets/automations/document-template/automation.json +64 -0
  7. package/src/assets/automations/document-template/payloads/v1/document.md +14 -0
  8. package/src/assets/automations/document-template/payloads/v1/notes.md +3 -0
  9. package/src/assets/automations/document-template/readme.md +5 -0
  10. package/src/assets/automations/document-template/skill.md +39 -0
  11. package/src/assets/automations/http-health-check/automation.json +61 -0
  12. package/src/assets/automations/http-health-check/payloads/request.json +4 -0
  13. package/src/assets/automations/http-health-check/readme.md +5 -0
  14. package/src/assets/automations/http-health-check/skill.md +39 -0
  15. package/src/assets/i18n/en-US.json +35 -1
  16. package/src/assets/i18n/fr-FR.json +35 -1
  17. package/src/assets/i18n/ja-JP.json +35 -1
  18. package/src/assets/i18n/pt-BR.json +35 -1
  19. package/src/assets/i18n/zh-CN.json +35 -1
  20. package/src/assets/mcp/anthropic.json +27 -0
  21. package/src/assets/mcp/aws.json +40 -0
  22. package/src/assets/mcp/azure.json +27 -0
  23. package/src/assets/mcp/bigquery.json +27 -0
  24. package/src/assets/mcp/bitbucket.json +27 -0
  25. package/src/assets/mcp/cloudflare.json +27 -0
  26. package/src/assets/mcp/confluence.json +27 -0
  27. package/src/assets/mcp/context7.json +14 -0
  28. package/src/assets/mcp/discord.json +27 -0
  29. package/src/assets/mcp/docker.json +27 -0
  30. package/src/assets/mcp/elasticsearch.json +27 -0
  31. package/src/assets/mcp/filesystem.json +20 -0
  32. package/src/assets/mcp/firebase.json +27 -0
  33. package/src/assets/mcp/gcp.json +27 -0
  34. package/src/assets/mcp/git.json +20 -0
  35. package/src/assets/mcp/github.json +21 -0
  36. package/src/assets/mcp/gitlab.json +21 -0
  37. package/src/assets/mcp/google-drive.json +21 -0
  38. package/src/assets/mcp/hubspot.json +27 -0
  39. package/src/assets/mcp/jira.json +27 -0
  40. package/src/assets/mcp/kubernetes.json +21 -0
  41. package/src/assets/mcp/linear.json +27 -0
  42. package/src/assets/mcp/memory.json +14 -0
  43. package/src/assets/mcp/microsoft-365.json +27 -0
  44. package/src/assets/mcp/mongodb.json +27 -0
  45. package/src/assets/mcp/mysql.json +27 -0
  46. package/src/assets/mcp/neon.json +27 -0
  47. package/src/assets/mcp/netlify.json +27 -0
  48. package/src/assets/mcp/notion.json +27 -0
  49. package/src/assets/mcp/ollama.json +20 -0
  50. package/src/assets/mcp/openai.json +27 -0
  51. package/src/assets/mcp/openrouter.json +27 -0
  52. package/src/assets/mcp/outlook.json +27 -0
  53. package/src/assets/mcp/playwright.json +14 -0
  54. package/src/assets/mcp/postgres.json +14 -0
  55. package/src/assets/mcp/railway.json +27 -0
  56. package/src/assets/mcp/redis.json +27 -0
  57. package/src/assets/mcp/render.json +27 -0
  58. package/src/assets/mcp/salesforce.json +27 -0
  59. package/src/assets/mcp/sentry.json +21 -0
  60. package/src/assets/mcp/sequential-thinking.json +14 -0
  61. package/src/assets/mcp/sharepoint.json +27 -0
  62. package/src/assets/mcp/shopify.json +27 -0
  63. package/src/assets/mcp/slack.json +27 -0
  64. package/src/assets/mcp/snowflake.json +27 -0
  65. package/src/assets/mcp/stripe.json +21 -0
  66. package/src/assets/mcp/supabase.json +27 -0
  67. package/src/assets/mcp/teams.json +27 -0
  68. package/src/assets/mcp/terraform.json +14 -0
  69. package/src/assets/mcp/vercel.json +27 -0
  70. package/src/assets/prompts/core/tool-decision.json +10 -0
  71. package/src/assets/scaffolds/angular-app.json +18 -0
  72. package/src/assets/scaffolds/dart-cli.json +17 -0
  73. package/src/assets/scaffolds/django-app.json +19 -0
  74. package/src/assets/scaffolds/dotnet-console.json +16 -0
  75. package/src/assets/scaffolds/dotnet-webapi.json +17 -0
  76. package/src/assets/scaffolds/express-api.json +22 -0
  77. package/src/assets/scaffolds/flutter-app.json +17 -0
  78. package/src/assets/scaffolds/go-api.json +20 -0
  79. package/src/assets/scaffolds/laravel-app.json +15 -0
  80. package/src/assets/scaffolds/nestjs-api.json +21 -0
  81. package/src/assets/scaffolds/next-app.json +29 -0
  82. package/src/assets/scaffolds/node-cli.json +21 -0
  83. package/src/assets/scaffolds/python-fastapi.json +24 -0
  84. package/src/assets/scaffolds/rails-app.json +15 -0
  85. package/src/assets/scaffolds/react-native-expo.json +16 -0
  86. package/src/assets/scaffolds/react-vite.json +23 -0
  87. package/src/assets/scaffolds/rust-cli.json +16 -0
  88. package/src/modules/automations/surface/knowledge.json +11 -0
  89. package/src/modules/automations/surface/loop.json +18 -0
  90. package/src/modules/automations/surface/prompt.json +20 -0
  91. package/src/modules/automations/surface/skill.json +17 -0
  92. package/src/modules/background/surface/knowledge.json +11 -0
  93. package/src/modules/background/surface/loop.json +18 -0
  94. package/src/modules/background/surface/prompt.json +20 -0
  95. package/src/modules/background/surface/skill.json +16 -0
  96. package/src/modules/environment/surface/knowledge.json +9 -1
  97. package/src/modules/environment/surface/prompt.json +31 -1
  98. package/src/modules/environment/surface/skill.json +7 -1
  99. package/src/modules/integrations/surface/knowledge.json +4 -0
  100. package/src/modules/integrations/surface/prompt.json +1 -1
  101. package/src/modules/integrations/surface/skill.json +4 -0
  102. package/src/modules/project/surface/knowledge.json +5 -2
  103. package/src/modules/project/surface/prompt.json +5 -0
  104. package/src/modules/project/surface/skill.json +6 -3
  105. package/src/assets/prompts/core/intent.json +0 -33
@@ -0,0 +1,17 @@
1
+ {
2
+ "schema": "agent-devkit.scaffold/v1",
3
+ "id": "flutter-app",
4
+ "name": "Flutter App",
5
+ "description": "Create a Flutter application.",
6
+ "category": "mobile",
7
+ "kind": "application",
8
+ "requiredTooling": ["flutter"],
9
+ "variables": [
10
+ { "name": "name", "description": "Project directory name.", "required": true },
11
+ { "name": "directory", "description": "Parent directory.", "default": "." }
12
+ ],
13
+ "create": [{ "command": "flutter", "args": ["create", "{{name}}"] }],
14
+ "postCreate": [{ "command": "flutter", "args": ["pub", "get"], "cwd": "{{name}}" }],
15
+ "doctor": [{ "command": "flutter", "args": ["doctor", "--machine"], "cwd": "{{name}}" }],
16
+ "outputs": ["{{name}}/pubspec.yaml", "{{name}}/lib/main.dart"]
17
+ }
@@ -0,0 +1,20 @@
1
+ {
2
+ "schema": "agent-devkit.scaffold/v1",
3
+ "id": "go-api",
4
+ "name": "Go API",
5
+ "description": "Create a minimal Go API project.",
6
+ "category": "backend",
7
+ "kind": "api",
8
+ "requiredTooling": ["go"],
9
+ "variables": [
10
+ { "name": "name", "description": "Project directory name.", "required": true },
11
+ { "name": "directory", "description": "Parent directory.", "default": "." },
12
+ { "name": "module", "description": "Go module path.", "default": "{{name}}" }
13
+ ],
14
+ "create": [
15
+ { "command": "mkdir", "args": ["-p", "{{name}}"], "platforms": ["darwin", "linux"] },
16
+ { "command": "cmd", "args": ["/c", "mkdir", "{{name}}"], "platforms": ["win32"] },
17
+ { "command": "go", "args": ["mod", "init", "{{module}}"], "cwd": "{{name}}" }
18
+ ],
19
+ "outputs": ["{{name}}/go.mod"]
20
+ }
@@ -0,0 +1,15 @@
1
+ {
2
+ "schema": "agent-devkit.scaffold/v1",
3
+ "id": "laravel-app",
4
+ "name": "Laravel App",
5
+ "description": "Create a Laravel application.",
6
+ "category": "backend",
7
+ "kind": "application",
8
+ "requiredTooling": ["php", "composer"],
9
+ "variables": [
10
+ { "name": "name", "description": "Project directory name.", "required": true },
11
+ { "name": "directory", "description": "Parent directory.", "default": "." }
12
+ ],
13
+ "create": [{ "command": "composer", "args": ["create-project", "laravel/laravel", "{{name}}"] }],
14
+ "outputs": ["{{name}}/composer.json", "{{name}}/artisan"]
15
+ }
@@ -0,0 +1,21 @@
1
+ {
2
+ "schema": "agent-devkit.scaffold/v1",
3
+ "id": "nestjs-api",
4
+ "name": "NestJS API",
5
+ "description": "Create a NestJS API project.",
6
+ "category": "backend",
7
+ "kind": "api",
8
+ "requiredTooling": ["node", "npm"],
9
+ "variables": [
10
+ { "name": "name", "description": "Project directory name.", "required": true },
11
+ { "name": "directory", "description": "Parent directory.", "default": "." }
12
+ ],
13
+ "create": [
14
+ {
15
+ "command": "npx",
16
+ "args": ["@nestjs/cli@latest", "new", "{{name}}", "--package-manager", "npm"]
17
+ }
18
+ ],
19
+ "doctor": [{ "command": "npm", "args": ["run", "build"], "cwd": "{{name}}" }],
20
+ "outputs": ["{{name}}/package.json", "{{name}}/src/main.ts"]
21
+ }
@@ -0,0 +1,29 @@
1
+ {
2
+ "schema": "agent-devkit.scaffold/v1",
3
+ "id": "next-app",
4
+ "name": "Next.js App",
5
+ "description": "Create a Next.js application.",
6
+ "category": "fullstack",
7
+ "kind": "application",
8
+ "requiredTooling": ["node", "npm"],
9
+ "variables": [
10
+ { "name": "name", "description": "Project directory name.", "required": true },
11
+ { "name": "directory", "description": "Parent directory.", "default": "." }
12
+ ],
13
+ "create": [
14
+ {
15
+ "command": "npx",
16
+ "args": [
17
+ "create-next-app@latest",
18
+ "{{name}}",
19
+ "--typescript",
20
+ "--eslint",
21
+ "--app",
22
+ "--src-dir",
23
+ "--yes"
24
+ ]
25
+ }
26
+ ],
27
+ "doctor": [{ "command": "npm", "args": ["run", "build"], "cwd": "{{name}}" }],
28
+ "outputs": ["{{name}}/package.json", "{{name}}/src/app"]
29
+ }
@@ -0,0 +1,21 @@
1
+ {
2
+ "schema": "agent-devkit.scaffold/v1",
3
+ "id": "node-cli",
4
+ "name": "Node CLI",
5
+ "description": "Create a minimal Node.js CLI project.",
6
+ "category": "cli",
7
+ "kind": "cli",
8
+ "requiredTooling": ["node", "npm"],
9
+ "variables": [
10
+ { "name": "name", "description": "Project directory name.", "required": true },
11
+ { "name": "directory", "description": "Parent directory.", "default": "." }
12
+ ],
13
+ "create": [
14
+ {
15
+ "command": "node",
16
+ "args": ["-e", "require('fs').mkdirSync(process.argv[1], { recursive: true })", "{{name}}"]
17
+ },
18
+ { "command": "npm", "args": ["init", "-y"], "cwd": "{{name}}" }
19
+ ],
20
+ "outputs": ["{{name}}/package.json"]
21
+ }
@@ -0,0 +1,24 @@
1
+ {
2
+ "schema": "agent-devkit.scaffold/v1",
3
+ "id": "python-fastapi",
4
+ "name": "Python FastAPI",
5
+ "description": "Create a minimal Python FastAPI project.",
6
+ "category": "backend",
7
+ "kind": "api",
8
+ "requiredTooling": ["python", "pip"],
9
+ "variables": [
10
+ { "name": "name", "description": "Project directory name.", "required": true },
11
+ { "name": "directory", "description": "Parent directory.", "default": "." }
12
+ ],
13
+ "create": [
14
+ { "command": "python", "args": ["-m", "venv", "{{name}}/.venv"] },
15
+ {
16
+ "command": "python",
17
+ "args": [
18
+ "-c",
19
+ "from pathlib import Path; p=Path('{{name}}'); p.mkdir(exist_ok=True); (p/'main.py').write_text('from fastapi import FastAPI\\n\\napp = FastAPI()\\n\\n@app.get(\"/\")\\ndef read_root():\\n return {\"status\": \"ok\"}\\n'); (p/'requirements.txt').write_text('fastapi\\nuvicorn\\n')"
20
+ ]
21
+ }
22
+ ],
23
+ "outputs": ["{{name}}/main.py", "{{name}}/requirements.txt"]
24
+ }
@@ -0,0 +1,15 @@
1
+ {
2
+ "schema": "agent-devkit.scaffold/v1",
3
+ "id": "rails-app",
4
+ "name": "Rails App",
5
+ "description": "Create a Ruby on Rails application.",
6
+ "category": "backend",
7
+ "kind": "application",
8
+ "requiredTooling": ["ruby", "rails"],
9
+ "variables": [
10
+ { "name": "name", "description": "Project directory name.", "required": true },
11
+ { "name": "directory", "description": "Parent directory.", "default": "." }
12
+ ],
13
+ "create": [{ "command": "rails", "args": ["new", "{{name}}"] }],
14
+ "outputs": ["{{name}}/Gemfile", "{{name}}/config/application.rb"]
15
+ }
@@ -0,0 +1,16 @@
1
+ {
2
+ "schema": "agent-devkit.scaffold/v1",
3
+ "id": "react-native-expo",
4
+ "name": "React Native Expo App",
5
+ "description": "Create an Expo React Native application.",
6
+ "category": "mobile",
7
+ "kind": "application",
8
+ "requiredTooling": ["node", "npm"],
9
+ "variables": [
10
+ { "name": "name", "description": "Project directory name.", "required": true },
11
+ { "name": "directory", "description": "Parent directory.", "default": "." }
12
+ ],
13
+ "create": [{ "command": "npx", "args": ["create-expo-app@latest", "{{name}}"] }],
14
+ "doctor": [{ "command": "npx", "args": ["expo-doctor"], "cwd": "{{name}}" }],
15
+ "outputs": ["{{name}}/package.json", "{{name}}/app.json"]
16
+ }
@@ -0,0 +1,23 @@
1
+ {
2
+ "schema": "agent-devkit.scaffold/v1",
3
+ "id": "react-vite",
4
+ "name": "React Vite App",
5
+ "description": "Create a React application with Vite.",
6
+ "category": "frontend",
7
+ "kind": "application",
8
+ "requiredTooling": ["node", "npm"],
9
+ "variables": [
10
+ { "name": "name", "description": "Project directory name.", "required": true },
11
+ { "name": "directory", "description": "Parent directory.", "default": "." },
12
+ { "name": "template", "description": "Vite template.", "default": "react-ts" }
13
+ ],
14
+ "create": [
15
+ {
16
+ "command": "npm",
17
+ "args": ["create", "vite@latest", "{{name}}", "--", "--template", "{{template}}"]
18
+ }
19
+ ],
20
+ "postCreate": [{ "command": "npm", "args": ["install"], "cwd": "{{name}}" }],
21
+ "doctor": [{ "command": "npm", "args": ["run", "build"], "cwd": "{{name}}" }],
22
+ "outputs": ["{{name}}/package.json", "{{name}}/src"]
23
+ }
@@ -0,0 +1,16 @@
1
+ {
2
+ "schema": "agent-devkit.scaffold/v1",
3
+ "id": "rust-cli",
4
+ "name": "Rust CLI",
5
+ "description": "Create a Rust CLI project.",
6
+ "category": "cli",
7
+ "kind": "cli",
8
+ "requiredTooling": ["cargo", "rust"],
9
+ "variables": [
10
+ { "name": "name", "description": "Project directory name.", "required": true },
11
+ { "name": "directory", "description": "Parent directory.", "default": "." }
12
+ ],
13
+ "create": [{ "command": "cargo", "args": ["new", "{{name}}", "--bin"] }],
14
+ "doctor": [{ "command": "cargo", "args": ["check"], "cwd": "{{name}}" }],
15
+ "outputs": ["{{name}}/Cargo.toml", "{{name}}/src/main.rs"]
16
+ }
@@ -0,0 +1,11 @@
1
+ {
2
+ "moduleId": "automations",
3
+ "summary": "Automations are reusable local task packages made of automation.json, skill.md, readme.md and payloads/.",
4
+ "facts": [
5
+ "The agent reads skill.md first; readme.md is for human documentation.",
6
+ "The curator must reject or mark for revision any automation outside the canonical contract.",
7
+ "Agent-generated automations can only use workflow, http, template or mcp.tool executors automatically.",
8
+ "Secrets must be referenced by vault name, never stored directly in automation files.",
9
+ "Duplicate automations are blocked; meaningful variants may be kept as candidate variations."
10
+ ]
11
+ }
@@ -0,0 +1,18 @@
1
+ {
2
+ "moduleId": "automations",
3
+ "mode": "automation-curation-and-execution",
4
+ "allowedActions": [
5
+ "Search existing automations before executing repetitive work.",
6
+ "Run active automations when permissions allow it.",
7
+ "Create candidate automations when a task is reusable and no equivalent automation exists.",
8
+ "Ask the curator to validate, classify and review candidates.",
9
+ "Use vault references for credentials required by automation execution."
10
+ ],
11
+ "forbiddenActions": [
12
+ "Run candidate automations before validation and promotion.",
13
+ "Accept automations missing automation.json, skill.md, readme.md or payloads/.",
14
+ "Store secrets inside automation manifests, skills, readmes or payload files.",
15
+ "Create duplicate automations when an active equivalent already covers the task."
16
+ ],
17
+ "approvalRequired": true
18
+ }
@@ -0,0 +1,20 @@
1
+ {
2
+ "moduleId": "automations",
3
+ "templates": [
4
+ {
5
+ "id": "automations.search",
6
+ "template": "Search reusable automations for this task before building a new workflow: {{query}}",
7
+ "variables": ["query"]
8
+ },
9
+ {
10
+ "id": "automations.createCandidate",
11
+ "template": "Create a canonical automation candidate only after confirming no equivalent active automation covers this task: {{task}}",
12
+ "variables": ["task"]
13
+ },
14
+ {
15
+ "id": "automations.run",
16
+ "template": "Run the selected active automation with structured input: {{input}}",
17
+ "variables": ["input"]
18
+ }
19
+ ]
20
+ }
@@ -0,0 +1,17 @@
1
+ {
2
+ "moduleId": "automations",
3
+ "purpose": "Reuse, create and curate safe task automations that the agent can execute through a canonical contract.",
4
+ "whenToUse": [
5
+ "The user asks for a repetitive or reusable task.",
6
+ "A previous task can become a script, template, HTTP request, workflow or MCP tool wrapper.",
7
+ "The agent needs to check whether an automation already exists.",
8
+ "The agent has created an automation candidate and needs curator review.",
9
+ "The user asks to install, disable, archive or audit automations."
10
+ ],
11
+ "whenNotToUse": [
12
+ "The task is one-off and should not be reused.",
13
+ "The automation would require storing secrets in plain text.",
14
+ "The candidate does not follow the canonical automation package layout.",
15
+ "The existing automation already covers the requested task exactly."
16
+ ]
17
+ }
@@ -0,0 +1,11 @@
1
+ {
2
+ "moduleId": "background",
3
+ "summary": "Background runs persistent local jobs through a queue, worker registry and user-controlled preferences.",
4
+ "facts": [
5
+ "Features dispatch background work through the canonical background dispatcher.",
6
+ "The runtime executes jobs in parallel up to maxParallelWorkers.",
7
+ "Jobs are persisted, auditable, retryable and can move to dead-letter.",
8
+ "Background jobs must not persist secrets in payloads.",
9
+ "Model usage in background is disabled unless the user preference allows it."
10
+ ]
11
+ }
@@ -0,0 +1,18 @@
1
+ {
2
+ "moduleId": "background",
3
+ "mode": "background-runtime-management",
4
+ "allowedActions": [
5
+ "List background jobs and queue counters.",
6
+ "Dispatch supported internal jobs when useful.",
7
+ "Run one runtime cycle on demand.",
8
+ "Update runtime preferences when the user asks.",
9
+ "Retry or cancel jobs when requested."
10
+ ],
11
+ "forbiddenActions": [
12
+ "Store credentials in job payloads.",
13
+ "Run background model jobs when allowModelUse is false.",
14
+ "Bypass environment permissions for local execution.",
15
+ "Create feature-specific background loops outside the canonical dispatcher."
16
+ ],
17
+ "approvalRequired": true
18
+ }
@@ -0,0 +1,20 @@
1
+ {
2
+ "moduleId": "background",
3
+ "templates": [
4
+ {
5
+ "id": "background.dispatch",
6
+ "template": "Dispatch the internal background job {{type}} with a minimal non-secret payload.",
7
+ "variables": ["type"]
8
+ },
9
+ {
10
+ "id": "background.status",
11
+ "template": "Inspect the background runtime status and explain whether jobs are pending, running, blocked or failed.",
12
+ "variables": []
13
+ },
14
+ {
15
+ "id": "background.runOnce",
16
+ "template": "Run one background processing cycle and report what changed.",
17
+ "variables": []
18
+ }
19
+ ]
20
+ }
@@ -0,0 +1,16 @@
1
+ {
2
+ "moduleId": "background",
3
+ "purpose": "Operate the canonical local background runtime for asynchronous jobs, maintenance and future autonomous processing.",
4
+ "whenToUse": [
5
+ "A task can be processed asynchronously without blocking the user.",
6
+ "The user asks about background status, jobs or runtime preferences.",
7
+ "Memory processing, environment scans, schedules or maintenance should run outside the main prompt path.",
8
+ "A failed or waiting job needs retry, cancellation or inspection."
9
+ ],
10
+ "whenNotToUse": [
11
+ "The user expects an immediate direct answer.",
12
+ "The payload contains secrets or credentials.",
13
+ "The job type is not registered in the background worker registry.",
14
+ "The action needs user approval or permissions that are not currently available."
15
+ ]
16
+ }
@@ -3,10 +3,18 @@
3
3
  "summary": "Environment capabilities inspect the local development machine, scan supported tooling, prepare dependencies, manage tooling lifecycle plans, process variables, files and approved shell execution.",
4
4
  "facts": [
5
5
  "Tools inspection can locate installed binaries and common version strings.",
6
- "Environment scan runs a structured read-only inventory of languages, SDKs, CLIs, frameworks, services and workspace tooling from the canonical tooling catalog.",
6
+ "Environment scan quick runs a structured read-only inventory from the canonical tooling catalog.",
7
+ "Environment scan full also discovers executable commands in PATH, project markers under approved roots and external MCP config files.",
8
+ "Environment inventory reads the persisted result of full scans so the agent can answer environment questions without rescanning every time.",
9
+ "Environment background stores opt-in scan preferences and can run a full scan on demand for approved roots.",
7
10
  "Environment tooling uses JSON definitions from assets/tooling plus local data/tooling entries to detect, doctor, install, upgrade, downgrade and uninstall supported tools.",
8
11
  "Environment setup is the preferred orchestrator when the user wants the agent to prepare, repair, install or authenticate operational dependencies.",
12
+ "Environment permissions stores the user's global/project/session permission mode, grants and capability-specific exceptions used by the agent approval runtime.",
13
+ "Environment terminal manages persistent shell sessions when the user needs a sequence of commands in the same cwd or process context.",
14
+ "Environment processes inspects and controls local processes and ports when the user asks what is running or needs to stop a process.",
15
+ "Environment variables lists and reads environment variables with sensitive-value redaction by default.",
9
16
  "When a required CLI is missing, prefer environment.setup before telling the user to install it manually.",
17
+ "When the user asks what exists on the machine, use environment.inventory first; if it is empty or stale, run environment.scan with scope full and persist true.",
10
18
  "Tooling lifecycle actions must plan before mutating the local environment.",
11
19
  "Learned tooling starts as a draft and must be promoted before it should be used for trusted lifecycle execution.",
12
20
  "Environment variable reads redact sensitive values unless explicitly requested.",
@@ -6,9 +6,29 @@
6
6
  "template": "Use filesystem results to answer with exact paths and mention whether a write, patch or delete changed state: {{result}}",
7
7
  "variables": ["result"]
8
8
  },
9
+ {
10
+ "id": "environment.permissions",
11
+ "template": "Explain the current environment permission mode, grants, exceptions, missing permissions and the exact approval the user must grant before retrying. Never imply broad access unless the result explicitly says full-access: {{result}}",
12
+ "variables": ["result"]
13
+ },
14
+ {
15
+ "id": "environment.processes",
16
+ "template": "Summarize process inspection or control results with pid, command, port, signal, status and any failed operation. Do not hide permission or platform limitations: {{result}}",
17
+ "variables": ["result"]
18
+ },
9
19
  {
10
20
  "id": "environment.scan",
11
- "template": "Summarize the environment scan by host, installed tools, missing tools, workspace matches, health findings and recommended next actions. Do not claim credentials are configured unless the scan explicitly says so: {{result}}",
21
+ "template": "Summarize the environment scan by host, installed tools, missing tools, discovered PATH commands, projects, MCP configs, health findings and recommended next actions. Do not claim credentials are configured unless the scan explicitly says so: {{result}}",
22
+ "variables": ["result"]
23
+ },
24
+ {
25
+ "id": "environment.inventory",
26
+ "template": "Summarize persisted environment inventory. If it is empty, recommend a full scan with approved roots. If it has projects, MCP configs or CLI discoveries, use exact paths and counts: {{result}}",
27
+ "variables": ["result"]
28
+ },
29
+ {
30
+ "id": "environment.background",
31
+ "template": "Explain background scanning status, configured roots, cadence and whether a full scan just ran. Make clear that background scanning is opt-in: {{result}}",
12
32
  "variables": ["result"]
13
33
  },
14
34
  {
@@ -16,6 +36,11 @@
16
36
  "template": "Summarize shell execution result with exit code, stdout, stderr and timeout status. Never hide failures: {{result}}",
17
37
  "variables": ["result"]
18
38
  },
39
+ {
40
+ "id": "environment.terminal",
41
+ "template": "Summarize persistent terminal session results with session id, cwd, command, output, exit state and next safe command if the task is not complete: {{result}}",
42
+ "variables": ["result"]
43
+ },
19
44
  {
20
45
  "id": "environment.setup",
21
46
  "template": "Explain this setup result as readiness, planned work, executed work and next actions. If approval is required, state exactly what permission is needed. If a CLI login requires an interactive terminal, say which command will run: {{result}}",
@@ -25,6 +50,11 @@
25
50
  "id": "environment.tooling",
26
51
  "template": "Explain this tooling result. For plans, show exact commands and approval requirements. For executions, show succeeded/failed/skipped steps and the next safe action: {{result}}",
27
52
  "variables": ["result"]
53
+ },
54
+ {
55
+ "id": "environment.variables",
56
+ "template": "Summarize environment variable results with names, redaction status and scope. Never print sensitive values unless the result explicitly includes them and the user requested sensitive reads: {{result}}",
57
+ "variables": ["result"]
28
58
  }
29
59
  ]
30
60
  }
@@ -3,6 +3,8 @@
3
3
  "purpose": "Inspect the local development environment and manage supported tooling through a safe catalog-driven lifecycle.",
4
4
  "whenToUse": [
5
5
  "The user asks for a system scan, environment diagnosis, machine raio X, installed languages, CLIs, frameworks, Docker, Flutter, Dart, cloud tools or development tools.",
6
+ "The user asks what projects, MCP configs or executable commands the agent has discovered locally.",
7
+ "The user wants to enable, disable or run opt-in background environment scanning.",
6
8
  "The user asks whether a required external tool, CLI, SDK, runtime or framework is installed or compatible.",
7
9
  "The user asks the agent to configure, prepare, repair or make a provider/tool ready for use.",
8
10
  "The user asks to install, update, upgrade, downgrade, uninstall or doctor a supported CLI, SDK, runtime, service or framework.",
@@ -10,7 +12,11 @@
10
12
  "The agent needs to verify runtime prerequisites before using a module.",
11
13
  "The user asks what tools, versions or environment variables are available.",
12
14
  "The user asks the agent to inspect, create, edit or patch files.",
13
- "The user asks the agent to run a terminal command."
15
+ "The user asks the agent to run a terminal command.",
16
+ "The user asks to configure or review permission modes, grants or tool-specific exceptions.",
17
+ "The user asks to create or continue a persistent terminal session.",
18
+ "The user asks to inspect or stop local processes and ports.",
19
+ "The user asks to list, read or reason about environment variables."
14
20
  ],
15
21
  "whenNotToUse": [
16
22
  "The task requires credentials that are not already configured or explicitly provided.",
@@ -3,6 +3,10 @@
3
3
  "summary": "Integrations connect Agent DevKit to external tools and MCP servers. External tools are cached locally before the agent can use them.",
4
4
  "facts": [
5
5
  "External MCP tools are exposed to the agent with ids formatted as mcp.<serverId>.<toolName>.",
6
+ "MCP discovery can inspect known external config files and workspace roots before the user manually registers a server.",
7
+ "Canonical MCP definitions live in assets/mcp and local user/discovered definitions live under data/mcp.",
8
+ "MCP catalog entries can register stdio or HTTP servers using template variables supplied by the user.",
9
+ "Discovered MCP servers must be imported with approval before they become registered integrations.",
6
10
  "The agent only sees external MCP tools after the server tools have been refreshed into the local cache.",
7
11
  "External MCP write, destructive, or unknown-risk tools require explicit approval before execution."
8
12
  ]
@@ -3,7 +3,7 @@
3
3
  "templates": [
4
4
  {
5
5
  "id": "integrations.mcpServers",
6
- "template": "Explain this external MCP integration result and identify whether tools were cached, disabled, or blocked by approval policy: {{result}}",
6
+ "template": "Explain this external MCP integration result and identify whether servers were listed from catalog, registered, discovered, imported, cached, disabled, or blocked by approval policy: {{result}}",
7
7
  "variables": ["result"]
8
8
  }
9
9
  ]
@@ -3,6 +3,10 @@
3
3
  "purpose": "Manage external integrations that extend the local agent runtime, starting with MCP servers.",
4
4
  "whenToUse": [
5
5
  "The user wants to connect Agent DevKit to an external MCP server.",
6
+ "The user wants to list, inspect or register a canonical MCP from the built-in MCP catalog.",
7
+ "The user wants to add a new MCP definition without changing project code.",
8
+ "The user asks to discover MCP servers configured in Claude, Codex, Cursor or a workspace.",
9
+ "The user wants to import discovered MCP server configs into Agent DevKit.",
6
10
  "The agent needs to list or refresh external MCP tools available for orchestration.",
7
11
  "The user asks whether a registered MCP integration is enabled or working."
8
12
  ],
@@ -1,11 +1,14 @@
1
1
  {
2
2
  "moduleId": "project",
3
- "summary": "Project state is local, explicit, and kept under .agent-devkit. Doctor observes state, init creates it, and reset removes it only with confirmation.",
3
+ "summary": "Project state is local, explicit, and kept under .agent-devkit. Doctor observes state, init creates it, reset removes it only with confirmation, and scaffold creates new application projects from canonical templates.",
4
4
  "facts": [
5
5
  "~/.agent-devkit is global user state.",
6
6
  "<project>/.agent-devkit is project-local state.",
7
7
  "agent doctor must not create or delete files.",
8
8
  "agent init creates .agent-devkit/config.json and .agent-devkit/agent-devkit.lock.",
9
- "agent reset removes only .agent-devkit for the selected scope and requires --yes for destructive work."
9
+ "agent reset removes only .agent-devkit for the selected scope and requires --yes for destructive work.",
10
+ "project.scaffold is the preferred capability when the user asks to create a new app, API, CLI, library or framework project.",
11
+ "project.scaffold plans required tooling and commands before creating files.",
12
+ "When scaffold required tooling is missing, use environment.setup before asking the user to install dependencies manually."
10
13
  ]
11
14
  }
@@ -15,6 +15,11 @@
15
15
  "id": "project.reset",
16
16
  "template": "Explain the reset target and warn that deletion requires explicit confirmation: {{targetPath}}",
17
17
  "variables": ["targetPath"]
18
+ },
19
+ {
20
+ "id": "project.scaffold",
21
+ "template": "Explain this scaffold result. For plans, show required tooling, missing tooling, target path and exact commands. For create, show created path, failed steps and validation status. If tooling is missing, recommend environment.setup before retrying: {{result}}",
22
+ "variables": ["result"]
18
23
  }
19
24
  ]
20
25
  }
@@ -1,13 +1,16 @@
1
1
  {
2
2
  "moduleId": "project",
3
- "purpose": "Manage and inspect Agent DevKit state for a local project.",
3
+ "purpose": "Manage Agent DevKit project state and create new application projects from canonical scaffolds.",
4
4
  "whenToUse": [
5
5
  "The user asks whether the current project is initialized.",
6
6
  "The user wants to initialize project-local Agent DevKit state.",
7
- "The user wants to remove project or global Agent DevKit state."
7
+ "The user wants to remove project or global Agent DevKit state.",
8
+ "The user asks to create, bootstrap or scaffold a new project in a supported language or framework.",
9
+ "The user asks for a new Flutter, React, Next.js, Angular, .NET, Python, Go, Rust, Laravel, Rails or Node project."
8
10
  ],
9
11
  "whenNotToUse": [
10
12
  "The user wants to update the npm package.",
11
- "The user wants model reasoning, routing, or prompt execution."
13
+ "The user wants model reasoning, routing, or prompt execution.",
14
+ "The user wants to install a missing SDK or CLI without creating a project; use environment.setup instead."
12
15
  ]
13
16
  }
@@ -1,33 +0,0 @@
1
- {
2
- "schema": "agent-devkit.prompt-pack/v1",
3
- "id": "core/intent",
4
- "version": "1.0.0",
5
- "description": "Classifies a user message as conversation (chat) or an action request (task) so the runtime can route it.",
6
- "locale": "pt-BR",
7
- "output": {
8
- "format": "json",
9
- "language": "pt-BR"
10
- },
11
- "policies": {
12
- "allowToolCalls": false,
13
- "approvalRequired": false,
14
- "maxToolCalls": 0
15
- },
16
- "knowledge": [
17
- {
18
- "id": "agent.intent.rule",
19
- "source": "core/intent",
20
- "content": "task = the user asks the agent to DO or CHANGE something: rename or configure the agent, create/update/delete local state, run diagnostics, install models, manage sessions/projects/preferences/secrets, analyze files or logs, execute any capability. chat = questions, explanations, opinions, small talk, or requests for information that need no tool."
21
- },
22
- {
23
- "id": "agent.intent.bias",
24
- "source": "core/intent",
25
- "content": "When genuinely ambiguous, prefer chat. Greetings and questions about the agent itself are chat."
26
- }
27
- ],
28
- "task": {
29
- "intent": "intent-routing",
30
- "userMessage": "Mensagem do usuario: {{message}}\n\nClassifique a mensagem. Responda SOMENTE com JSON: {\"intent\":\"chat\"} ou {\"intent\":\"task\"}.",
31
- "variables": ["message"]
32
- }
33
- }