-
-
Notifications
You must be signed in to change notification settings - Fork 4.1k
fix(subagents): improve reliability by requiring persistence checks and style matching #468
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
psklarkins
wants to merge
93
commits into
obra:main
Choose a base branch
from
psklarkins:main
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
+7,178
−267
Open
Changes from all commits
Commits
Show all changes
93 commits
Select commit
Hold shift + click to select a range
28049c4
feat: add Amplifier agent mapping reference for skills
psklarkins 267d88d
feat: brainstorming as session hub with Amplifier agent awareness
psklarkins 453ef35
feat: writing-plans with Amplifier agent assignment per task
psklarkins 473be4a
feat: subagent-driven-dev dispatches Amplifier agents with specialist…
psklarkins a897b22
feat: dispatching-parallel-agents selects Amplifier specialists per d…
psklarkins 257614d
feat: using-superpowers points to brainstorming as session starting p…
psklarkins 3aec914
docs: add Amplifier integration implementation plan
psklarkins 9f5c386
fix: update review templates, path refs, and expand agent mapping
psklarkins 5e0c65c
docs: add design for improved skill discovery and subagent coordination
07ef777
docs: add implementation plan for skill discovery and coordination
ddc88f0
feat: add skill indexer for semantic discovery
14c40cb
feat: add git-notes state manager for subagent coordination
9e23b86
dummy commit for testing state persistence
e715a8e
feat: integrate git-notes coordination into subagent-driven-development
57a32e7
Merge branch 'feature/discovery-coordination'
d6f42fd
docs: add implementation plan for amplifier-superpowers coordination …
8894757
feat: add state schema and validation for shared context
946846b
feat: add CLI tools for recording findings and syncing context
5ba3045
feat: add push-context utility for sharing findings
6e97d3e
docs: add implementation plan for OpenCode workflow dashboard
d7b3186
feat: add visualization utility for OpenCode dashboard
2859aee
feat: integrate reactive dashboard into subagent workflow
23f5c67
docs: add implementation plan for automated skill activation
09c6ff9
feat: add role-based semantic tags to core skills
4c94420
feat: implement persona-based automated skill activation
f630e79
test: add verification for automated skill activation
e020459
feat: allow overriding git notes ref via environment variable for tes…
e3625b9
feat: add brainstorm server foundation
obra e532c6d
feat: add browser helper library for event capture
obra 3ec1c25
fix: ensure user-event type is preserved in WebSocket message output
obra 6a524af
test: add brainstorm server integration tests
obra 62b5887
feat: add visual companion to brainstorming skill
obra f4f62cb
fix: correct visual companion documentation issues
obra 8360e08
fix: preserve original event type, use source field for wrapper
obra 9be148f
docs: add visual brainstorming implementation plan
obra 23cb23b
feat: add sendToClaude helper and wait-for-event tool
obra e2c6be7
feat: add visual companion for brainstorming skill
obra 194cca5
fix: session isolation and blocking wait for visual companion
obra b7774ec
feat: add show-and-wait.sh helper, fix race condition
obra a1f1c75
refactor: simplify visual companion workflow, improve guidance
obra 5bacd0f
docs: improve terminal UX for visual companion
obra e6d3c5c
Use semantic filenames for visual companion screens
obra 00fca66
Add instruction priority hierarchy to using-superpowers skill
obra 75e037d
feat(opencode): use native skills and fix agent reset bug (#226) (#330)
obra 3abe1cf
fix: Windows hook execution for Claude Code 2.1.x (#331)
obra 2538180
refactor: restructure specs and plans directories
obra 6915ca4
feat: enforce brainstorming → writing-plans transition
obra 41ff1a9
feat: enforce subagent-driven-development on capable harnesses
obra 7ad7220
feat: add spec document reviewer prompt template
obra b2d325a
feat: add spec review loop to brainstorming skill
obra 2754b1a
feat: add plan document reviewer prompt template
obra e85234b
feat: add plan review loop and checkbox syntax to writing-plans skill
obra f093a19
docs: update plan header to reference checkbox syntax
obra 3c2afcd
docs: add document review system spec and plan
obra 0d1efaf
fix: remove checkbox from task headings, keep on steps only
obra acb50ce
test: add end-to-end tests for document review system
obra 3abf068
test: rewrite document review test as proper integration test
obra 9133401
refactor: server-side frame wrapping and helper.js consolidation
obra b10a3c0
feat: persist brainstorm mockups to .superpowers/ directory
obra 3ed9207
docs: restructure brainstorming skill with progressive disclosure
obra e9b4611
docs: add brainstorm visual companion improvements to release notes
obra 03d182b
chore: gitignore triage directory
obra 5a3137c
feat: add architecture guidance and capability-aware escalation to sk…
obra 6394555
fix: address review feedback on architecture guidance
obra 6ca430a
feat: add file growth check to code quality reviewer
obra b051932
feat: add architecture and file size checks to review loops
obra eac29a9
feat: add project-level scope assessment to brainstorming pipeline
obra 84cd6e7
fix: move scope assessment into understanding phase
obra d73d1b9
feat: implement model-aware skill recommendations and optimization
b93e651
docs: add implementation plan for enhanced git memory
de924c8
feat: expand state schema for knowledge base support
a4d24d7
feat: add recall and memorize CLI tools
6884c06
feat: add snapshot-memory tool for human readability
faa456c
feat: integrate memory tools into skills and plugin
742b652
docs: add initial memory snapshot from test
0a967f7
Merge branch 'backup-local-main'
3b96c49
docs: add comprehensive system documentation for Superpowers, Amplifi…
a1a1ae5
Merge pull request #441 from obra/wip/architecture-guidance
obra 8abf9d0
Merge pull request #443 from obra/wip/project-decomposition
obra 4d54210
fix: restore polyglot wrapper to fix Windows hook window spawning
obra f6b872f
merge: sync upstream/dev with Amplifier agent integration
psklarkins af419b4
fix: strengthen Amplifier agent dispatch and simplify review ceremony
psklarkins 0361ae4
feat: add dispatch visibility and concrete model selection
psklarkins 138ac72
feat: add multi-provider model mapping for Claude and Gemini
psklarkins f9a1d0f
feat: activate git-notes memory workflow with skill integration
psklarkins bd65f4e
feat: unified skill indexing and UI signal support for OpenCode
449100e
fix(subagents): improve reliability by requiring persistence checks a…
a3e70c4
perf: delegate brainstorming context gathering to scout subagent
psklarkins 82f6778
perf: delegate spec writing and review to subagent
psklarkins 3ded327
perf: delegate large plan generation to subagent
psklarkins 0db42de
perf: add output discipline to implementer and reviewer prompts
psklarkins ab97a8a
Merge pull request #1 from psklarkins/feature/context-window-protection
psklarkins dba965f
merge: sync upstream superpowers v4.3.0 into fork
psklarkins File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,3 +1,6 @@ | ||
| .worktrees/ | ||
| .private-journal/ | ||
| .claude/ | ||
| node_modules/ | ||
| inspo | ||
| triage/ |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,72 @@ | ||
| # Amplifier Agent Mapping | ||
|
|
||
| Reference for superpowers skills. Consult this to select the right Amplifier agent for each task. | ||
|
|
||
| ## Core Development Agents | ||
|
|
||
| | Task Type | Agent | Trigger Keywords | | ||
| |-----------|-------|-----------------| | ||
| | Architecture/Design | `zen-architect` | plan, design, architect, structure, module spec, system design | | ||
| | Implementation | `modular-builder` | implement, build, create, add, write code | | ||
| | Testing | `test-coverage` | test, coverage, verify, validate, assertion | | ||
| | Debugging | `bug-hunter` | fix, debug, error, failure, broken, regression | | ||
| | Security Review | `security-guardian` | security, auth, secrets, OWASP, vulnerability, permission | | ||
| | Integration | `integration-specialist` | API, MCP, external, dependency, connection, integration | | ||
| | Performance | `performance-optimizer` | performance, slow, optimize, bottleneck, latency | | ||
| | Cleanup | `post-task-cleanup` | cleanup, hygiene, lint, format, unused, dead code | | ||
| | API Design | `api-contract-designer` | endpoint, contract, REST, GraphQL, schema, route | | ||
| | Database | `database-architect` | schema, migration, query, index, table, database | | ||
| | Specifications | `contract-spec-author` | spec, contract, interface, protocol, requirements doc | | ||
|
|
||
| ## Design Agents | ||
|
|
||
| | Task Type | Agent | Trigger Keywords | | ||
| |-----------|-------|-----------------| | ||
| | UI/Component | `component-designer` | component, UI, frontend, visual, widget | | ||
| | Aesthetic Direction | `art-director` | aesthetic, brand, visual identity, mood, style guide | | ||
| | Animation/Motion | `animation-choreographer` | animation, transition, motion, easing, keyframe | | ||
| | Layout | `layout-architect` | layout, grid, page structure, sidebar, navigation | | ||
| | Responsive | `responsive-strategist` | responsive, breakpoint, mobile, tablet, viewport | | ||
| | Design System | `design-system-architect` | design tokens, theme, design system, foundation | | ||
| | UX Writing | `voice-strategist` | copy, microcopy, tone, error message, UX writing | | ||
|
|
||
| ## Knowledge & Analysis Agents | ||
|
|
||
| | Task Type | Agent | Trigger Keywords | | ||
| |-----------|-------|-----------------| | ||
| | Research | `content-researcher` | research, investigate, compare, survey, evaluate | | ||
| | Analysis | `analysis-engine` | analyze, assess, audit, measure, report | | ||
| | Concept Extraction | `concept-extractor` | extract, summarize, distill, key ideas, themes | | ||
| | Synthesis | `insight-synthesizer` | synthesize, combine, cross-reference, connect | | ||
| | Code Archaeology | `knowledge-archaeologist` | history, evolution, legacy, why was this, original intent | | ||
| | Pattern Discovery | `pattern-emergence` | pattern, recurring, commonality, trend, structural | | ||
| | Visualization | `visualization-architect` | diagram, chart, graph, visualize, data viz | | ||
| | Knowledge Graph | `graph-builder` | graph, relationship, entity, connection, network | | ||
|
|
||
| ## Meta Agents | ||
|
|
||
| | Task Type | Agent | Trigger Keywords | | ||
| |-----------|-------|-----------------| | ||
| | Module Design | `module-intent-architect` | module boundary, brick, stud, interface, contract | | ||
| | Agent Creation | `subagent-architect` | new agent, specialized agent, create agent | | ||
| | CLI Tool Design | `amplifier-cli-architect` | CLI tool, command, scenario, amplifier tool | | ||
| | Ambiguity Detection | `ambiguity-guardian` | ambiguous, unclear, vague, conflicting, assumption | | ||
|
|
||
| ## Review Agent Mapping | ||
|
|
||
| | Review Type | Agent | When | | ||
| |-------------|-------|------| | ||
| | Spec Compliance | `test-coverage` | After every implementation task | | ||
| | Code Quality | `zen-architect` (REVIEW mode) | After spec compliance passes | | ||
| | Security | `security-guardian` | Security-sensitive tasks or final review | | ||
| | Post-completion | `post-task-cleanup` | After all tasks pass, before finishing branch | | ||
|
|
||
| ## Selection Rules | ||
|
|
||
| 1. Match task description keywords against the Trigger Keywords column | ||
| 2. If multiple agents match, pick the one whose Task Type best describes the primary goal | ||
| 3. Implementation tasks default to `modular-builder` unless a more specific agent fits | ||
| 4. Review tasks always use the Review Agent Mapping above | ||
| 5. When unsure, `modular-builder` for building and `bug-hunter` for fixing | ||
| 6. Design agents are for UI/frontend work — use only when the task is primarily visual/design | ||
| 7. Knowledge agents are for research/analysis — use when gathering or synthesizing information |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,107 @@ | ||
| # Memory Workflow | ||
|
|
||
| Three memory systems serve different roles. Use the right one at the right time. | ||
|
|
||
| ## The Three Systems | ||
|
|
||
| | System | Role | Storage | Scope | | ||
| |--------|------|---------|-------| | ||
| | **Auto-memory** (MEMORY.md) | Working memory | `~/.claude/projects/*/memory/` | Cross-session, always loaded | | ||
| | **Git-notes** (knowledge_base) | Project memory | `refs/notes/superpowers` per repo | Per-repo, accumulated decisions/patterns | | ||
| | **Episodic Memory** | Recall memory | Conversation archive | Cross-session, searchable transcripts | | ||
|
|
||
| ## When to READ | ||
|
|
||
| | Trigger | System | Command | | ||
| |---------|--------|---------| | ||
| | Every session start | Auto-memory | Automatic (loaded into system prompt) | | ||
| | Starting brainstorming | Episodic Memory | `episodic-memory:search-conversations` for related past work | | ||
| | Before design decisions | Git-notes | `node ${SUPERPOWERS_DIR}/commands/recall.js knowledge_base.decisions` | | ||
| | Before implementation | Git-notes | `node ${SUPERPOWERS_DIR}/commands/recall.js knowledge_base.patterns` | | ||
| | "Did we discuss X?" | Episodic Memory | Semantic search through archive | | ||
| | Unfamiliar domain term | Git-notes | `node ${SUPERPOWERS_DIR}/commands/recall.js knowledge_base.glossary` | | ||
|
|
||
| ## When to WRITE | ||
|
|
||
| | Trigger | System | Command | | ||
| |---------|--------|---------| | ||
| | Architecture decision made | Git-notes | `memorize knowledge_base.decisions --value '{"id":"ADR-NNN", ...}'` | | ||
| | Pattern discovered | Git-notes | `memorize knowledge_base.patterns --value '{"title":"...", ...}'` | | ||
| | Domain term clarified | Git-notes | `memorize knowledge_base.glossary --value '{"term":"definition"}'` | | ||
| | Infrastructure change (IPs, creds) | Auto-memory | Edit MEMORY.md directly | | ||
| | Session ends | Auto-memory | `sync-memory.sh` hook (automatic) | | ||
| | Human-readable export needed | Git-notes | `node ${SUPERPOWERS_DIR}/commands/snapshot-memory.js` | | ||
|
|
||
| ## Decision Record Format (ADR) | ||
|
|
||
| ```json | ||
| { | ||
| "id": "ADR-NNN", | ||
| "title": "Short descriptive title", | ||
| "status": "accepted|superseded|deprecated", | ||
| "context": "What situation prompted this decision", | ||
| "decision": "What we decided and why", | ||
| "consequences": "What follows from this decision" | ||
| } | ||
| ``` | ||
|
|
||
| ## Pattern Format | ||
|
|
||
| ```json | ||
| { | ||
| "title": "Pattern name", | ||
| "description": "When and why to use this pattern", | ||
| "code": "Example code or command", | ||
| "language": "python|javascript|bash|etc" | ||
| } | ||
| ``` | ||
|
|
||
| ## Glossary Format | ||
|
|
||
| Pass as object — keys are terms, values are definitions: | ||
|
|
||
| ```json | ||
| {"TermName": "Definition of the term in project context"} | ||
| ``` | ||
|
|
||
| ## What Goes Where | ||
|
|
||
| **Auto-memory (MEMORY.md)** — information needed EVERY session regardless of task: | ||
| - Network topology, server IPs, credentials | ||
| - Deployment commands and paths | ||
| - API endpoints and keys | ||
| - IIS sites, database connection strings | ||
|
|
||
| **Git-notes (knowledge_base)** — project-specific knowledge that accumulates: | ||
| - `decisions`: Why we chose approach X over Y (ADRs) | ||
| - `patterns`: Established code patterns with examples | ||
| - `glossary`: Domain terms and their meaning in this project | ||
|
|
||
| **Episodic Memory** — never written to manually: | ||
| - Passive archival of all conversations | ||
| - Used for "what did we discuss about X?" queries | ||
| - Provides evidence for decisions when context is lost | ||
|
|
||
| ## Command Reference | ||
|
|
||
| All commands run from any repo directory. `${SUPERPOWERS_DIR}` = path to superpowers installation. | ||
|
|
||
| ```bash | ||
| # Recall specific section | ||
| node ${SUPERPOWERS_DIR}/commands/recall.js knowledge_base.decisions | ||
| node ${SUPERPOWERS_DIR}/commands/recall.js knowledge_base.patterns | ||
| node ${SUPERPOWERS_DIR}/commands/recall.js knowledge_base.glossary | ||
|
|
||
| # Store a decision | ||
| node ${SUPERPOWERS_DIR}/commands/memorize.js knowledge_base.decisions --value '{"id":"ADR-001","title":"...","status":"accepted","context":"...","decision":"...","consequences":"..."}' | ||
|
|
||
| # Store a pattern | ||
| node ${SUPERPOWERS_DIR}/commands/memorize.js knowledge_base.patterns --value '{"title":"...","description":"...","code":"...","language":"bash"}' | ||
|
|
||
| # Store glossary terms | ||
| node ${SUPERPOWERS_DIR}/commands/memorize.js knowledge_base.glossary --value '{"Term":"Definition"}' | ||
|
|
||
| # Export human-readable snapshot | ||
| node ${SUPERPOWERS_DIR}/commands/snapshot-memory.js | ||
| # Writes to docs/memory/SNAPSHOT.md in current repo | ||
| ``` | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,68 @@ | ||
| # Model Provider Mapping | ||
|
|
||
| Superpowers skills are provider-agnostic. This document maps model tiers to specific providers so skills work across Claude Code, OpenCode/Gemini, and future environments. | ||
|
|
||
| ## Tier Mapping | ||
|
|
||
| | Tier | Intent | Claude Code (`model` param) | OpenCode/Gemini (`/model` cmd) | | ||
| |------|--------|-----------------------------|-------------------------------| | ||
| | **Fast** | Mechanical tasks, clear spec, 1-2 files | `haiku` | `google/gemini-3-flash-preview` | | ||
| | **Balanced** | Multi-file, debugging, reasoning | `sonnet` | `google/gemini-3-pro-preview` | | ||
| | **Deep** | Architecture, security, broad judgment | `opus` | `google/gemini-3-pro-preview` | | ||
|
|
||
| ## How Each Environment Consumes This | ||
|
|
||
| ### Claude Code | ||
|
|
||
| The Task tool's `model` parameter accepts: `haiku`, `sonnet`, `opus`. | ||
|
|
||
| ``` | ||
| Task(subagent_type="bug-hunter", model="sonnet", description="...", prompt="...") | ||
| ``` | ||
|
|
||
| Skills reference Claude model names in dispatch examples and Model Selection tables. The `recommended_model` YAML field is not consumed by Claude Code. | ||
|
|
||
| ### OpenCode / Gemini | ||
|
|
||
| OpenCode uses `/model` commands and `@mention` for subagents: | ||
|
|
||
| ``` | ||
| /model google/gemini-3-flash-preview | ||
| ``` | ||
|
|
||
| The `recommended_model` YAML field in skill headers (`flash`, `pro`) maps to Gemini models. The OpenCode plugin injects model recommendations via system prompt transform. | ||
|
|
||
| ### YAML `recommended_model` Field | ||
|
|
||
| | YAML Value | Provider | Tier | | ||
| |------------|----------|------| | ||
| | `flash` | Gemini | Fast | | ||
| | `pro` | Gemini | Balanced | | ||
|
|
||
| This field is consumed by OpenCode only. Claude Code ignores it and uses its own Model Selection tables within each skill. | ||
|
|
||
| ## Agent-to-Tier Mapping | ||
|
|
||
| | Agent | Tier | Claude | Gemini | Rationale | | ||
| |-------|------|--------|--------|-----------| | ||
| | `modular-builder` (simple) | Fast | `haiku` | Flash | Mechanical with clear spec | | ||
| | `modular-builder` (multi-file) | Balanced | `sonnet` | Pro | Integration reasoning needed | | ||
| | `bug-hunter` | Balanced | `sonnet` | Pro | Root cause analysis | | ||
| | `database-architect` | Balanced | `sonnet` | Pro | Schema design judgment | | ||
| | `test-coverage` (spec review) | Fast | `haiku` | Flash | Checklist comparison | | ||
| | `zen-architect` (quality review) | Balanced | `sonnet` | Pro | Architecture judgment | | ||
| | `security-guardian` | Deep | `opus` | Pro | Deepest analysis needed | | ||
| | `post-task-cleanup` | Fast | `haiku` | Flash | Mechanical cleanup | | ||
| | `integration-specialist` | Balanced | `sonnet` | Pro | External system expertise | | ||
| | `performance-optimizer` | Balanced | `sonnet` | Pro | Measure-first approach | | ||
| | `component-designer` | Balanced | `sonnet` | Pro | Visual consistency judgment | | ||
| | `api-contract-designer` | Balanced | `sonnet` | Pro | Contract validation | | ||
|
|
||
| ## Adding a New Provider | ||
|
|
||
| To add support for a new provider (e.g., OpenAI): | ||
|
|
||
| 1. Add a column to the Tier Mapping table above | ||
| 2. Map each tier to the provider's model names | ||
| 3. Create the environment-specific dispatch mechanism (plugin, hook, etc.) | ||
| 4. Skills remain unchanged — they reference tiers through the existing Model Selection tables |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Security concern: guidance to store credentials and API keys in MEMORY.md.
Lines 70-73 recommend storing server IPs, credentials, API keys, and database connection strings in a plain-text file that is "always loaded into system prompt" (line 17). Secrets injected into LLM context can be inadvertently echoed in model outputs, logged, or sent to third-party APIs. Consider recommending environment variables or a secret manager instead, and limiting MEMORY.md to non-sensitive references (e.g., "credentials are in 1Password vault X" or "use
$DB_CONNECTION_STRINGenv var").🤖 Prompt for AI Agents