@lazyingart/agintiflow 0.12.11 → 0.14.0

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/README.md CHANGED
@@ -75,7 +75,7 @@ For code edits, AgInTiFlow routes patch/refactor/database-style tasks to DeepSee
75
75
 
76
76
  For larger repositories, use `--profile large-codebase` or choose **Large codebase engineering** in the web UI. The web default stays **Auto**, and Auto now escalates codebase/system/debugging prompts to the same engineering loop when needed. Complex work routes to DeepSeek v4 pro, starts with `inspect_project`, then uses search/read/patch/check loops inspired by Codex, Copilot SDK, Claude Code, Gemini CLI, Qwen, and Claw Code. See [docs/large-codebase-engineering.md](docs/large-codebase-engineering.md).
77
77
 
78
- AgInTiFlow can also spend cheap DeepSeek calls on parallel scout notes before the main executor starts a complicated task. It first builds a bounded `inspect_project` context pack, then runs scouts for architecture, implementation, review, research, context mapping, tests, git workflow, integration, symbol tracing, and dependency risks. A coordinator Swarm Board is injected for the main agent. The executor still does the real file/shell/browser work itself. Disable with `--no-parallel-scouts` or set `--scout-count 1..10`.
78
+ AgInTiFlow can also spend cheap DeepSeek calls on parallel scout notes before the main executor starts a complicated task. It first writes a bounded project map to `.aginti/codebase-map.json`, then runs scouts for architecture, implementation, review, research, context mapping, tests, git workflow, integration, symbol tracing, and dependency risks. A coordinator Swarm Board is injected for the main agent and saved as `artifacts/scout-blackboard.json` in the session. The executor still does the real file/shell/browser work itself. Disable with `--no-parallel-scouts` or set `--scout-count 1..10`.
79
79
 
80
80
  The next productive-agent roadmap is tracked in [docs/productive-agent-roadmap.md](docs/productive-agent-roadmap.md): durable codebase maps, stronger scout blackboards, long-run checkpoints, LSP/symbol tools, test triage, and release automation.
81
81
 
@@ -83,6 +83,16 @@ For current docs, install errors, package/toolchain setup, and source discovery,
83
83
 
84
84
  For raster image work, AgInTiFlow has an optional `image_generation` skill backed by the `generate_image` tool and a local `GRSAI` key. The skill tells DeepSeek when image generation is appropriate; the tool calls GRS AI Nano Banana, saves manifests/images under `artifacts/images`, and sends the result to the canvas. See [docs/auxiliary-image-generation.md](docs/auxiliary-image-generation.md).
85
85
 
86
+ AgInTiFlow now ships a Markdown skill library in `skills/<id>/SKILL.md`. Skills are prompt playbooks, while tools are deterministic actions such as `apply_patch`, `run_command`, `web_search`, `generate_image`, and `send_to_canvas`. Built-in skills cover code, websites/apps, LaTeX manuscripts, books, Word documents, image generation, GitHub, system maintenance, Android, R/Stan, Python, C/C++, shell, AAPS, and novel writing. See [docs/skills-and-tools.md](docs/skills-and-tools.md).
87
+
88
+ ```bash
89
+ aginti skills
90
+ aginti skills website
91
+ aginti --list-skills latex
92
+ # in chat:
93
+ /skills github commit
94
+ ```
95
+
86
96
  Launch the local web UI from an installed package:
87
97
 
88
98
  ```bash
@@ -99,9 +99,9 @@ DeepSeek calls are cheap enough that complex tasks can use several short advisor
99
99
  - Symbol tracer: predicts names, APIs, routes, schemas, and searches that connect the change.
100
100
  - Dependency doctor: checks package managers, Docker/toolchain setup, generated artifacts, and install risks.
101
101
 
102
- Before scouts run, AgInTiFlow builds a bounded shared context pack with `inspect_project`: manifests, top-level files, source/test directories, package scripts, language counts, git status hints, and recommended reads. This avoids the weak pattern of each scout rediscovering the repo differently or flooding the main context with an infinite tree.
102
+ Before scouts run, AgInTiFlow builds a bounded shared context pack from a durable project map at `.aginti/codebase-map.json`: manifests, top-level files, source/test directories, package scripts, language counts, git status hints, and recommended reads. This avoids the weak pattern of each scout rediscovering the repo differently or flooding the main context with an infinite tree.
103
103
 
104
- Scout output is synthesized by a coordinator Swarm Board and injected as advisory context only. The board records shared context, execution order, conflicts/unknowns, must-read files/checks, and stop conditions. The main agent still owns execution and must use real tools to inspect, edit, run commands, and finish. CLI flags:
104
+ Scout output is synthesized by a coordinator Swarm Board, persisted as `artifacts/scout-blackboard.json`, and injected as advisory context only. The board records shared context, execution order, conflicts/unknowns, must-read files/checks, and stop conditions. The main agent still owns execution and must use real tools to inspect, edit, run commands, and finish. CLI flags:
105
105
 
106
106
  ```bash
107
107
  aginti --parallel-scouts --scout-count 10 "fix this complicated repo bug"
@@ -19,8 +19,8 @@ AgInTiFlow should become a practical coding agent, not only a chat UI around a m
19
19
 
20
20
  ## Missing Productive-Agent Pieces
21
21
 
22
- 1. Durable codebase map: cache `inspect_project`, symbol locations, test commands, package scripts, and recently changed files per project.
23
- 2. Scout blackboard: let scouts write short structured findings to a shared board, then run a coordinator pass that resolves conflicts before execution.
22
+ 1. Durable codebase map: cache `inspect_project`, symbol locations, test commands, package scripts, and recently changed files per project. Initial slice implemented as `.aginti/codebase-map.json` with manifests, source/test dirs, package scripts, languages, git hints, and recommended reads.
23
+ 2. Scout blackboard: let scouts write short structured findings to a shared board, then run a coordinator pass that resolves conflicts before execution. Initial slice implemented as per-session `artifacts/scout-blackboard.json` with role lanes, findings, coordinator handoff, and codebase-map metadata.
24
24
  3. Long-run checkpoints: save phase state after inspect, patch, test, repair, and commit so a long task can recover after interruption.
25
25
  4. Symbol/LSP tools: add find-definition, references, diagnostics, and document-symbols for JS/TS, Python, Rust, Go, and C/C++ where available.
26
26
  5. Test triage: parse common test failures into file, symbol, command, and likely cause so repair loops stay narrow.
@@ -30,6 +30,6 @@ AgInTiFlow should become a practical coding agent, not only a chat UI around a m
30
30
 
31
31
  ## Swarm Design
32
32
 
33
- Scouts must not become noisy subagents. Each scout gets the same bounded context pack and one role. The coordinator produces a Swarm Board with shared context, execution order, disagreements, must-read files, checks, and stop conditions. The main agent still owns tool use and must re-read exact files before editing.
33
+ Scouts must not become noisy subagents. Each scout gets the same bounded context pack generated from the durable codebase map and one role. The coordinator produces a Swarm Board with shared context, execution order, disagreements, must-read files, checks, and stop conditions. The main agent still owns tool use and must re-read exact files before editing.
34
34
 
35
35
  Use 3 scouts for medium tasks, 5 for large tasks, and up to 10 for complex multi-language or system tasks. More scouts are only useful when their roles cover different failure modes.
@@ -0,0 +1,58 @@
1
+ # Skills And Tools
2
+
3
+ AgInTiFlow separates **skills** from **tools** so the agent can stay general while still improving on specialized work.
4
+
5
+ ## Definitions
6
+
7
+ **Skill**: Markdown guidance stored at `skills/<id>/SKILL.md`. A skill describes when to use a workflow, what to inspect first, which outputs matter, and which tools are usually useful. Skills are prompt context, not executable code.
8
+
9
+ **Tool**: A deterministic callable capability exposed to the model, such as `inspect_project`, `read_file`, `apply_patch`, `run_command`, `web_search`, `generate_image`, `preview_workspace`, or `send_to_canvas`.
10
+
11
+ **Profile**: A broad runtime mode such as `auto`, `code`, `latex`, or `maintenance`. Profiles tune routing, max steps, and general behavior. Skills can combine across profiles.
12
+
13
+ ## Built-In Skills
14
+
15
+ The package ships built-in skills for code engineering, website/app building, LaTeX manuscripts, books, Microsoft Word documents, image generation, GitHub maintenance, system maintenance, Android, R/Stan, Python, C/C++, shell scripting, AAPS, and novel writing.
16
+
17
+ List them from a project:
18
+
19
+ ```bash
20
+ aginti skills
21
+ aginti skills website
22
+ aginti --list-skills latex
23
+ ```
24
+
25
+ Inside interactive chat:
26
+
27
+ ```text
28
+ /skills
29
+ /skills github commit
30
+ ```
31
+
32
+ ## Selection Flow
33
+
34
+ For every run, AgInTiFlow scores the user goal and active profile against skill frontmatter:
35
+
36
+ ```yaml
37
+ ---
38
+ id: latex-manuscript
39
+ label: LaTeX Manuscript
40
+ description: Write, compile, and package LaTeX papers, reports, figures, bibliographies, and PDFs.
41
+ triggers:
42
+ - latex
43
+ - tex
44
+ - manuscript
45
+ tools:
46
+ - write_file
47
+ - apply_patch
48
+ - run_command
49
+ ---
50
+ ```
51
+
52
+ Selected skills are injected into the plan and execution prompts. The LLM still decides what to do; skills only provide domain playbooks and guardrails.
53
+
54
+ ## Adding A Skill
55
+
56
+ Create `skills/<id>/SKILL.md` with valid YAML frontmatter and a short Markdown body. Keep descriptions strings, not YAML arrays, because loaders expect `id`, `label`, and `description` as scalar strings.
57
+
58
+ Good skills are small, actionable, and tool-aware. They should say what to inspect, what to create or verify, and what to avoid. They should not hard-code one exact task.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lazyingart/agintiflow",
3
- "version": "0.12.11",
3
+ "version": "0.14.0",
4
4
  "type": "module",
5
5
  "description": "AgInTiFlow is a resumable Playwright website-control agent with OpenAI-compatible tool calling.",
6
6
  "license": "Apache-2.0",
@@ -46,10 +46,12 @@
46
46
  "scripts/smoke-coding-tools.js",
47
47
  "scripts/smoke-capabilities.js",
48
48
  "scripts/smoke-inbox.js",
49
+ "scripts/smoke-skills.js",
49
50
  "scripts/smoke-toolchain-docker.js",
50
51
  "scripts/smoke-web-api.js",
51
52
  "src/",
52
53
  "run.js",
54
+ "skills/",
53
55
  "web.js"
54
56
  ],
55
57
  "bin": {
@@ -64,11 +66,12 @@
64
66
  "smoke:coding-tools": "node scripts/smoke-coding-tools.js",
65
67
  "smoke:auxiliary-tools": "node scripts/smoke-auxiliary-tools.js",
66
68
  "smoke:cli-chat": "node scripts/smoke-cli-chat.js",
69
+ "smoke:skills": "node scripts/smoke-skills.js",
67
70
  "smoke:toolchain-docker": "node scripts/smoke-toolchain-docker.js",
68
71
  "smoke:inbox": "node scripts/smoke-inbox.js",
69
72
  "smoke:web-api": "node scripts/smoke-web-api.js",
70
73
  "real:deepseek": "node scripts/real-deepseek-capabilities.js",
71
- "test": "npm run check && npm run smoke:web-api && npm run smoke:coding-tools && npm run smoke:auxiliary-tools && npm run smoke:capabilities && npm run smoke:cli-chat && npm run smoke:inbox",
74
+ "test": "npm run check && npm run smoke:web-api && npm run smoke:coding-tools && npm run smoke:auxiliary-tools && npm run smoke:capabilities && npm run smoke:skills && npm run smoke:cli-chat && npm run smoke:inbox",
72
75
  "pack:dry-run": "npm pack --dry-run",
73
76
  "smoke:capabilities": "node scripts/smoke-capabilities.js"
74
77
  },
@@ -81,6 +81,14 @@ try {
81
81
  capabilities.trustedDockerPolicy.some((check) => check.command.startsWith("chmod") && check.allowed),
82
82
  "trusted Docker policy did not allow chmod"
83
83
  );
84
+ assert(
85
+ capabilities.tools?.skills?.some((skill) => skill.id === "website-app"),
86
+ "capabilities did not report built-in website skill"
87
+ );
88
+ assert(
89
+ capabilities.tools?.skills?.some((skill) => skill.id === "latex-manuscript"),
90
+ "capabilities did not report built-in LaTeX skill"
91
+ );
84
92
 
85
93
  const doctor = JSON.parse(await runCli(["doctor", "--capabilities", "--json"]));
86
94
  assert(doctor.project.root === tempRoot, "doctor --capabilities used the wrong project root");
@@ -91,7 +99,7 @@ try {
91
99
  {
92
100
  ok: true,
93
101
  projectRoot: tempRoot,
94
- checks: ["aginti-md-init", "capabilities-cli", "doctor-capabilities", "maintenance-policy", "trusted-docker-policy", "git-policy"],
102
+ checks: ["aginti-md-init", "capabilities-cli", "doctor-capabilities", "maintenance-policy", "trusted-docker-policy", "git-policy", "skills-capability"],
95
103
  },
96
104
  null,
97
105
  2
@@ -122,6 +122,10 @@ try {
122
122
  if (!instructionsResult.stdout.includes("AGINTI.md") || !instructionsResult.stdout.includes("Project instructions")) {
123
123
  throw new Error("interactive /instructions did not show AGINTI.md");
124
124
  }
125
+ const skillsResult = await runChat("/skills website\n/exit\n");
126
+ if (!skillsResult.stdout.includes("website-app") || !skillsResult.stdout.includes("Website And App Builder")) {
127
+ throw new Error("interactive /skills did not show matching built-in skills");
128
+ }
125
129
  await runChat("remember that this project prefers pytest smoke tests in AGINTI.md\n/exit\n");
126
130
  const updatedInstructions = await fs.readFile(path.join(tempRoot, "AGINTI.md"), "utf8");
127
131
  if (!updatedInstructions.includes("pytest smoke tests")) {
@@ -159,7 +163,7 @@ try {
159
163
  {
160
164
  ok: true,
161
165
  projectRoot: tempRoot,
162
- checks: ["markdown-render", "markdown-table-no-duplicate", "patch-diff-render", "prompt-layout", "live-input-status-layout", "agent-response-gutter", "aginti-md", "instructions-command", "instructions-chat-edit", "interactive-chat", "mock-file-write", "run-status", "resume-latest", "resume-history-full"],
166
+ checks: ["markdown-render", "markdown-table-no-duplicate", "patch-diff-render", "prompt-layout", "live-input-status-layout", "agent-response-gutter", "aginti-md", "instructions-command", "skills-command", "instructions-chat-edit", "interactive-chat", "mock-file-write", "run-status", "resume-latest", "resume-history-full"],
163
167
  },
164
168
  null,
165
169
  2
@@ -5,6 +5,7 @@ import path from "node:path";
5
5
  import { fileURLToPath } from "node:url";
6
6
  import { repairModelMessageHistory, runAgent } from "../src/agent-runner.js";
7
7
  import { resolveRuntimeConfig } from "../src/config.js";
8
+ import { readCodebaseMap } from "../src/codebase-map.js";
8
9
  import { engineeringGuidanceForTask, recommendedMaxStepsForTask } from "../src/engineering-guidance.js";
9
10
  import { selectModelRoute } from "../src/model-routing.js";
10
11
  import { listParallelScouts, runParallelScouts, shouldRunParallelScouts } from "../src/parallel-scouts.js";
@@ -219,10 +220,19 @@ try {
219
220
  assert(scoutRun.contextPack.includes("package.json"), "parallel scout context pack did not include manifest evidence");
220
221
  assert(scoutRun.summary.includes("## shared context pack"), "parallel scout summary omitted shared context pack");
221
222
  assert(scoutRun.summary.includes("## coordinator"), "parallel scout summary omitted coordinator synthesis");
223
+ assert(scoutRun.codebaseMap?.fingerprint, "parallel scout run did not return durable codebase map metadata");
224
+ assert(scoutRun.blackboard?.lanes?.length === 10, "parallel scout blackboard did not include all scout lanes");
225
+ assert(scoutRun.blackboard?.coordinator.includes("Swarm Board"), "parallel scout blackboard did not retain coordinator synthesis");
222
226
  assert(
223
227
  fakeScoutPrompts.filter((prompt) => /Shared context pack:[\s\S]*package\.json/.test(prompt)).length >= 10,
224
228
  "parallel scouts did not receive the shared context pack"
225
229
  );
230
+ const codebaseMap = await readCodebaseMap(workspace);
231
+ assert(codebaseMap.ok && codebaseMap.map.fingerprint === scoutRun.codebaseMap.fingerprint, "durable codebase map was not persisted");
232
+ const blackboardStore = new SessionStore(runtimeDir, "blackboard-smoke");
233
+ const blackboardPath = await blackboardStore.saveJsonArtifact("scout-blackboard.json", scoutRun.blackboard);
234
+ const blackboardJson = JSON.parse(await fs.readFile(blackboardPath, "utf8"));
235
+ assert(blackboardJson.lanes.length === 10, "scout blackboard artifact did not persist lanes");
226
236
 
227
237
  const inspectRun = await runMock("Inspect this large codebase and recommend next reads.", "coding-inspect");
228
238
  assert(
@@ -368,6 +378,8 @@ try {
368
378
  "web_search_dry_run",
369
379
  "inspect_project",
370
380
  "parallel_scout_context_pack",
381
+ "durable_codebase_map",
382
+ "scout_blackboard",
371
383
  "mock_inspect_project",
372
384
  "write_file",
373
385
  "duplicate_write_failed",
@@ -0,0 +1,70 @@
1
+ #!/usr/bin/env node
2
+ import { execFile } from "node:child_process";
3
+ import path from "node:path";
4
+ import { promisify } from "node:util";
5
+ import { fileURLToPath } from "node:url";
6
+ import { formatSkillsForPrompt, listSkills, selectSkillsForGoal } from "../src/skill-library.js";
7
+
8
+ const execFileAsync = promisify(execFile);
9
+ const repoRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), "..");
10
+
11
+ function assert(condition, message) {
12
+ if (!condition) throw new Error(message);
13
+ }
14
+
15
+ function selectedIds(goal, taskProfile = "auto") {
16
+ return selectSkillsForGoal(goal, { taskProfile, limit: 8 }).map((skill) => skill.id);
17
+ }
18
+
19
+ const skills = listSkills({ includeBody: true });
20
+ const ids = new Set(skills.map((skill) => skill.id));
21
+ assert(skills.length >= 14, "expected built-in skills to load");
22
+ for (const required of [
23
+ "aaps",
24
+ "code",
25
+ "github-maintenance",
26
+ "image-generation",
27
+ "latex-manuscript",
28
+ "system-maintenance",
29
+ "website-app",
30
+ "word-documents",
31
+ ]) {
32
+ assert(ids.has(required), `missing required skill ${required}`);
33
+ }
34
+
35
+ assert(selectedIds("write a beautiful React website and preview it").includes("website-app"), "website prompt did not select website-app");
36
+ assert(selectedIds("write a LaTeX paper and compile a PDF").includes("latex-manuscript"), "latex prompt did not select latex-manuscript");
37
+ assert(selectedIds("edit a Microsoft Word docx and preserve the original").includes("word-documents"), "docx prompt did not select word-documents");
38
+ assert(selectedIds("generate a logo image with grsai nanobanana").includes("image-generation"), "image prompt did not select image-generation");
39
+ assert(selectedIds("git status commit push with gh").includes("github-maintenance"), "git prompt did not select github-maintenance");
40
+ assert(selectedIds("create an .aaps example for @lazyingart/aaps").includes("aaps"), "AAPS prompt did not select aaps");
41
+ assert(selectedIds("debug a C++ CMake build").includes("c-cpp"), "C++ prompt did not select c-cpp");
42
+ assert(selectedIds("set up Stan and CmdStanR reproducibly").includes("r-stan"), "Stan prompt did not select r-stan");
43
+
44
+ const prompt = formatSkillsForPrompt(selectSkillsForGoal("write latex manuscript with figures", { taskProfile: "latex", limit: 3 }));
45
+ assert(prompt.includes("A skill is Markdown guidance"), "skill prompt does not explain skill semantics");
46
+ assert(prompt.includes("latex-manuscript"), "skill prompt omitted selected skill");
47
+ assert(prompt.length < 5400, "skill prompt is too large for normal runs");
48
+
49
+ const cli = await execFileAsync(process.execPath, [path.join(repoRoot, "bin/aginti-cli.js"), "skills", "website"], {
50
+ cwd: repoRoot,
51
+ timeout: 10000,
52
+ maxBuffer: 512 * 1024,
53
+ env: {
54
+ ...process.env,
55
+ AGINTIFLOW_RUNTIME_DIR: "",
56
+ },
57
+ });
58
+ assert(cli.stdout.includes("website-app"), "aginti skills website did not print website-app");
59
+
60
+ console.log(
61
+ JSON.stringify(
62
+ {
63
+ ok: true,
64
+ skills: skills.length,
65
+ checks: ["load-built-ins", "select-by-goal", "prompt-format", "cli-skills"],
66
+ },
67
+ null,
68
+ 2
69
+ )
70
+ );
@@ -81,6 +81,9 @@ try {
81
81
  if (!Array.isArray(config.taskProfiles) || !config.taskProfiles.some((profile) => profile.id === "latex")) {
82
82
  throw new Error("task profiles are not advertised by /api/config");
83
83
  }
84
+ if (!Array.isArray(config.skills) || !config.skills.some((skill) => skill.id === "website-app")) {
85
+ throw new Error("built-in skills are not advertised by /api/config");
86
+ }
84
87
 
85
88
  const keyStatus = await fetchJson("/api/keys/status");
86
89
  if (typeof keyStatus.keyStatus?.deepseek !== "boolean") throw new Error("key status endpoint is invalid");
@@ -0,0 +1,21 @@
1
+ ---
2
+ id: aaps
3
+ label: AAPS Workflows
4
+ description: Work with ../AAPS, .aaps files, @lazyingart/aaps, automation plans, and related project conventions.
5
+ triggers:
6
+ - aaps
7
+ - .aaps
8
+ - @lazyingart/aaps
9
+ - automation plan
10
+ tools:
11
+ - inspect_project
12
+ - read_file
13
+ - write_file
14
+ - run_command
15
+ - web_search
16
+ ---
17
+ # AAPS Workflows
18
+
19
+ Inspect nearby `.aaps` files, package docs, and project notes before generating workflows. Keep assumptions explicit and outputs project-local.
20
+
21
+ Do not publish, upload, or expose credentials unless explicitly requested and safe.
@@ -0,0 +1,23 @@
1
+ ---
2
+ id: android
3
+ label: Android Development
4
+ description: Build and debug Android, Gradle, Kotlin, Java, emulator, and mobile app projects.
5
+ triggers:
6
+ - android
7
+ - gradle
8
+ - kotlin
9
+ - java
10
+ - apk
11
+ - emulator
12
+ tools:
13
+ - inspect_project
14
+ - search_files
15
+ - apply_patch
16
+ - run_command
17
+ - web_search
18
+ ---
19
+ # Android Development
20
+
21
+ Inspect Gradle files, manifests, package names, modules, and existing build scripts before editing. Prefer narrow Gradle tasks and source-set-aware patches.
22
+
23
+ If SDK/emulator tooling is missing, produce a setup report or project-local script rather than guessing.
@@ -0,0 +1,23 @@
1
+ ---
2
+ id: book-writing
3
+ label: Book And Long-Form Writing
4
+ description: Plan, draft, revise, and structure books, chapters, scripts, tutorials, and long documents.
5
+ triggers:
6
+ - book
7
+ - chapter
8
+ - script
9
+ - tutorial
10
+ - long form
11
+ - outline
12
+ - manuscript
13
+ tools:
14
+ - write_file
15
+ - read_file
16
+ - web_search
17
+ - send_to_canvas
18
+ ---
19
+ # Book And Long-Form Writing
20
+
21
+ Start with structure: audience, promise, outline, chapter flow, voice, and revision plan. Save durable drafts as Markdown unless the user requests another format.
22
+
23
+ Use web search for current facts and keep source notes when claims matter. For long work, produce incremental chapters and revision notes instead of one huge brittle output.
@@ -0,0 +1,23 @@
1
+ ---
2
+ id: c-cpp
3
+ label: C And C++ Development
4
+ description: Work with C, C++, CMake, Make, native builds, tests, and low-level debugging.
5
+ triggers:
6
+ - c++
7
+ - cpp
8
+ - c language
9
+ - cmake
10
+ - makefile
11
+ - gcc
12
+ - clang
13
+ tools:
14
+ - inspect_project
15
+ - search_files
16
+ - apply_patch
17
+ - run_command
18
+ ---
19
+ # C And C++ Development
20
+
21
+ Inspect build files before source edits. Keep patches narrow, respect formatting style, and run the smallest compile/test target available.
22
+
23
+ If native dependencies are missing, prefer Docker/project-local setup notes and do not silently change host toolchains.
@@ -0,0 +1,25 @@
1
+ ---
2
+ id: code
3
+ label: Code Engineering
4
+ description: Build, edit, debug, test, and maintain software projects across languages.
5
+ triggers:
6
+ - code
7
+ - app
8
+ - bug
9
+ - test
10
+ - refactor
11
+ - package
12
+ - project
13
+ tools:
14
+ - inspect_project
15
+ - search_files
16
+ - read_file
17
+ - apply_patch
18
+ - run_command
19
+ - web_search
20
+ ---
21
+ # Code Engineering
22
+
23
+ Orient before editing: inspect the project map, read instructions/manifests, search exact symbols or errors, then patch the smallest coherent set of files.
24
+
25
+ Prefer deterministic `apply_patch` for source edits. Run focused checks first, repair failures, then broaden checks only when useful. Summarize changed files, commands run, and residual risk.
@@ -0,0 +1,23 @@
1
+ ---
2
+ id: github-maintenance
3
+ label: GitHub And Release Maintenance
4
+ description: Use git and gh safely for status, commits, pull requests, releases, and repository maintenance.
5
+ triggers:
6
+ - git
7
+ - github
8
+ - gh
9
+ - commit
10
+ - push
11
+ - pull request
12
+ - release
13
+ tools:
14
+ - run_command
15
+ - read_file
16
+ - apply_patch
17
+ - web_search
18
+ ---
19
+ # GitHub And Release Maintenance
20
+
21
+ Always inspect `git status --short` and relevant diffs before committing or pushing. Keep commits scoped and stop on conflicts, divergence, or unrelated dirty work.
22
+
23
+ Use `gh` for PR/release/status workflows when authenticated. Fold long command output but preserve key errors, URLs, branch names, and commit hashes.
@@ -0,0 +1,23 @@
1
+ ---
2
+ id: image-generation
3
+ label: Image Generation
4
+ description: Generate or edit raster images, posters, covers, logos, illustrations, and visual assets.
5
+ triggers:
6
+ - image
7
+ - logo
8
+ - poster
9
+ - cover
10
+ - illustration
11
+ - nanobanana
12
+ - grsai
13
+ - gpt image
14
+ tools:
15
+ - generate_image
16
+ - write_file
17
+ - send_to_canvas
18
+ ---
19
+ # Image Generation
20
+
21
+ Use image generation when the user asks for a raster visual asset or prompt. Write a concise prompt with subject, style, composition, color, lighting, and output constraints.
22
+
23
+ Prefer `generate_image` when a GRS AI key is available. Save selected outputs under artifacts and send the chosen image to canvas.
@@ -0,0 +1,25 @@
1
+ ---
2
+ id: latex-manuscript
3
+ label: LaTeX Manuscript
4
+ description: Write, compile, and package LaTeX papers, reports, figures, bibliographies, and PDFs.
5
+ triggers:
6
+ - latex
7
+ - tex
8
+ - manuscript
9
+ - paper
10
+ - pdf
11
+ - figure
12
+ - overleaf
13
+ tools:
14
+ - write_file
15
+ - apply_patch
16
+ - run_command
17
+ - open_workspace_file
18
+ - send_to_canvas
19
+ - web_search
20
+ ---
21
+ # LaTeX Manuscript
22
+
23
+ Use a project subfolder with `main.tex`, figures, bibliography, and generated PDFs. Compile from the correct directory with `latexmk` or `pdflatex` when available.
24
+
25
+ If TeX is missing, produce an honest setup note or Docker-local setup plan instead of faking success. Send the final PDF or source to canvas when useful.
@@ -0,0 +1,21 @@
1
+ ---
2
+ id: novel-writing
3
+ label: Novel Writing
4
+ description: Plan, draft, revise, and manage novels, character arcs, scenes, chapters, and long fiction.
5
+ triggers:
6
+ - novel
7
+ - fiction
8
+ - character
9
+ - scene
10
+ - plot
11
+ - chapter
12
+ tools:
13
+ - write_file
14
+ - read_file
15
+ - send_to_canvas
16
+ ---
17
+ # Novel Writing
18
+
19
+ Track premise, characters, setting, conflict, tone, and continuity. Save outlines, chapter drafts, and revision notes as durable files.
20
+
21
+ For long works, write in scenes or chapters and maintain a compact continuity bible instead of relying on chat history alone.
@@ -0,0 +1,24 @@
1
+ ---
2
+ id: python
3
+ label: Python Development
4
+ description: Build Python packages, CLIs, scripts, tests, notebooks, plotting, and data workflows.
5
+ triggers:
6
+ - python
7
+ - pytest
8
+ - pyproject
9
+ - pip
10
+ - uv
11
+ - matplotlib
12
+ - pandas
13
+ tools:
14
+ - inspect_project
15
+ - search_files
16
+ - apply_patch
17
+ - run_command
18
+ - send_to_canvas
19
+ ---
20
+ # Python Development
21
+
22
+ Inspect `pyproject.toml`, requirements, package layout, and tests. Prefer stdlib tests when dependency installs are unnecessary; otherwise use project-local venv/conda/uv or Docker.
23
+
24
+ For plots and artifacts, save files with clear names and send useful outputs to canvas.
@@ -0,0 +1,24 @@
1
+ ---
2
+ id: r-stan
3
+ label: R And Stan
4
+ description: Work with R, Stan, CmdStan, CmdStanR, PyStan, statistics, and reproducible analysis projects.
5
+ triggers:
6
+ - r
7
+ - stan
8
+ - cmdstan
9
+ - cmdstanr
10
+ - pystan
11
+ - statistics
12
+ - bayesian
13
+ tools:
14
+ - inspect_project
15
+ - write_file
16
+ - run_command
17
+ - web_search
18
+ - send_to_canvas
19
+ ---
20
+ # R And Stan
21
+
22
+ Keep analysis reproducible: scripts, data paths, package notes, seed handling, and output folders. Prefer Docker or project-local toolchains for installation.
23
+
24
+ For Stan, validate model syntax and compile/run only when toolchains exist; otherwise write honest setup scripts and checks.
@@ -0,0 +1,21 @@
1
+ ---
2
+ id: shell
3
+ label: Shell Scripting
4
+ description: Write, audit, and run shell scripts for automation, setup, diagnostics, and maintenance.
5
+ triggers:
6
+ - shell
7
+ - bash
8
+ - script
9
+ - terminal
10
+ - command
11
+ - cli
12
+ tools:
13
+ - write_file
14
+ - run_command
15
+ - web_search
16
+ ---
17
+ # Shell Scripting
18
+
19
+ Prefer idempotent scripts with `set -euo pipefail` when appropriate, clear variables, dry-run or validation modes, and `bash -n` checks.
20
+
21
+ Separate diagnosis from mutation. Keep dangerous host operations explicit and reversible.
@@ -0,0 +1,24 @@
1
+ ---
2
+ id: system-maintenance
3
+ label: System Maintenance
4
+ description: Diagnose and repair local system, shell, package, Docker, conda, Python, R, and toolchain problems.
5
+ triggers:
6
+ - system
7
+ - install
8
+ - package
9
+ - docker
10
+ - conda
11
+ - environment
12
+ - fix computer
13
+ - error
14
+ tools:
15
+ - run_command
16
+ - write_file
17
+ - web_search
18
+ - send_to_canvas
19
+ ---
20
+ # System Maintenance
21
+
22
+ Diagnose first with read-only commands. Prefer Docker/project-local scripts and `/aginti-env` for broad toolchain setup. Host-level sudo or destructive operations require explicit user approval outside normal automation.
23
+
24
+ For complicated setup, write idempotent scripts, run syntax checks, and report exact next safe command.