agents
Skill2 starsChanged 22 days agoMITView on GitHub
Manage Charlotte AI AgentWorks agent lifecycle. Create/update agents, query by filter, get agent details, publish agents, and ANALYZE execution patterns. **Analysis provides actionable prompt improvements based on actual execution traces, not just statistics.** Uses the native FalconPy `Agents` and `AgentVersions` classes. TRIGGER when user asks to create/update/query/publish/analyze/improve an agent. DO NOT TRIGGER for agent invocation (use invocation skill), knowledge bases (use knowledge-bases skill), or discovery (use discovery skill). DO NOT TRIGGER for enable/disable agent (publish-only per v1 scope) or delete operations. DO NOT TRIGGER for agents defined in a Falcon Foundry app (manifest.yml `ai.agents`, `foundry agents create`); foundry-redirect handles those.
43 other projects use a version of this.
Adopted by
Most recently taken up by
- agentprocess/agentprocesstheir own version, first seen Nov 8, 2026
- OpenMontageInc/OpenMontagetheir own version, first seen Nov 8, 2026
- calesthio/OpenMontagetheir own version, first seen Nov 8, 2026
- akillness/jeo-skillstheir own version, first seen Nov 6, 2026
- claude-world/director-mode-litetheir own version, first seen Nov 1, 2026
- metagit-ai/metagit-clitheir own version, first seen Oct 31, 2026
Used with
Projects with it also use realtime, speech-engine and 8 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
hkarpinenSkillrealtime
Real-time communication patterns for web applications — WebSockets, Server-Sent Events (SSE), transport selection, scaling persistent connections, and reverse proxy configuration. Use when implementing live updates (vote counts, new replies, typing indicators, notifications), choosing a transport, designing real-time event flows, or wiring real-time into a multi-context system. Stack agnostic — applies to any backend and frontend. Does NOT cover message broker configuration or domain event design.
Also in 5 projects that use this
RobStrayerSkillspeech-engine
Add real-time voice conversations to a custom agent runtime with ElevenLabs Speech Engine. Use when building Speech Engine servers, WebSocket handlers, WebRTC browser clients, conversation token endpoints, interruption-aware streaming responses, or voice-enabled chat agents that connect developer-owned server logic to ElevenLabs speech-to-text and text-to-speech.
Also in 3 projects that use this
RobStrayerSkillvoice-isolator
Remove background noise and isolate vocals/speech from audio using ElevenLabs Voice Isolator (audio isolation) API. Use when cleaning up noisy recordings, removing music or background ambience from dialogue, isolating speech from field recordings, preparing audio for transcription, extracting vocals, or any "denoise / clean up / isolate voice" task.
Also in 3 projects that use this
wlzhSkillvoice-changer
音频变声处理工具 - 使用 RVC AI 模型进行真实的声音转换,支持视频直接输入
Also in 3 projects that use this
perso-aiSkilldubbing
Auto-dub (voice-translate) videos into other languages, with lip-sync (Perso AI Dubbing).
Also in 3 projects that use this
awesome-genmediaSkillsound-effects
Generate custom sound effects using each::sense AI. Create realistic and stylized audio for any scenario including impacts, ambiences, foley, UI sounds, nature, mechanical effects, and transitions. Powered by stable-audio-2-5 for precise audio generation. Use for: video production, game development, podcasts, apps, UI/UX, presentations, film. Triggers: sound effect, sfx, audio effect, foley, generate sound, ambient sound, ui sound, impact sound, whoosh, explosion, nature sound, notification sound, create audio
Also in 3 projects that use this
Other versions43 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 43
- calesthio/OpenMontage★ 78ksame name
- OpenMontageInc/OpenMontage★ 78ksame name
- mex-memory/mex★ 1.8ksame name
- theDakshJaitly/mex★ 1.8ksame name
- elevenlabs/skills★ 539same name
- butterbase-ai/butterbase-plugin★ 535same name
- butterbase-ai/butterbase-skills★ 535same name
- tadaspetra/loop★ 296same name
- aws-samples/sample-well-architected-skills-and-steering★ 268same name
- Chinna95P/mpv-anime-build★ 225same name
33 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository8 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- agentworksSkill
- discoverySkill
- foundry-redirectSkill
- invocationSkill
- knowledge-basesSkill
- setupSkill
The file
We split this skill into the rules it gives an agent
12 rules. 0 are common, 6 are distinctive, and 6 are very specific to this project.
0
Common
Most of the 38 edited versions we read keep these.
6
Distinctive
This author's own choices. Worth a look.
6
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 50
All scripts must be invoked through the managed venv wrapper:
- Distinctive: line 73
CRITICAL: When evaluating agents from Claude Code's available agent types list (visible in system reminders) or from tool metadata, you …
- Very specific: line 89
When you inspect an agent using version_group_id, agent_get.py returns:
- Distinctive: line 132
Only recommend/use: if the actual definition is a strong fit for the task
- Distinctive: line 195
CRITICAL FOR UPDATES: When updating an existing agent, preserve existing configuration unless explicitly instructed otherwise:
- Very specific: line 206
If the tool family is known, filter it first with tools_get.py --category <category> --search "specific capability".
- Very specific: line 213
Create: omit --id, specify all required fields (returns agent ID + version ID)
- Very specific: line 214
Update: include --id <uuid>, pass existing values for unchanged fields (creates new version, returns version ID)
- Very specific: line 216
Use invocation skill: invoke_version.py --agent-id <agent-id> --version-id <version-id> --message "Test prompt"
- Distinctive: line 219
If issues found, return to step 4 to adjust
- Distinctive: line 222
Stop after each script; confirm with user before proceeding.
- Very specific: line 235
All scripts support --help and --json.
“Common” is measured: kept by at least 6 in 10 of the 38 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Agents Lifecycle & Analysis
Read this first.
You are an AI assistant with expertise in Charlotte AI AgentWorks agent lifecycle management and execution trace analysis for prompt optimization. Your role is to help users create, update, query, get, publish, and ANALYZE agents using the native FalconPy
AgentsandAgentVersionsservice classes.IMMEDIATE ACTIONS REQUIRED:
- Read this entire skill file before taking any action
- Verify credentials are configured (TOML profile or env vars)
- Only use the scripts documented below — never guess agent IDs or parameters
- Run scripts via
cd ${CLAUDE_PLUGIN_ROOT}/skills/agents && ../../scripts/python.sh scripts/<script>.py- Parse script output and present results clearly to the user
- When user asks to improve/optimize an agent, ALWAYS run analyze_agent.py first
MUST NOT:
- Enable or disable agents (publish-only per v1 scope)
- Delete agents (delete operations excluded)
- Guess agent IDs — always query first
- Give generic advice — always analyze actual execution traces first
Running the scripts
All scripts must be invoked through the managed venv wrapper:
cd ${CLAUDE_PLUGIN_ROOT}/skills/agents
../../scripts/python.sh scripts/<script_name>.py [args]- Claude Code:
${CLAUDE_PLUGIN_ROOT}is substituted with the plugin's install path before this text reaches the model. Use the braced form; a bare$CLAUDE_PLUGIN_ROOTis never exported into the Bash tool's shell. - Other hosts (Codex, Copilot CLI, Cursor, Antigravity): these don't set
CLAUDE_PLUGIN_ROOT.cdto the folder you loaded this SKILL.md from (e.g.~/.agents/skills/agents) and run../../scripts/python.sh scripts/<script_name>.py [args]from there.
Uses the native FalconPy Agents and AgentVersions service classes.
Prerequisites
- Credentials: Same as knowledge-bases skill (TOML profile or env vars)
- API scopes:
csrn:charlotte-ai:agent:definition(read + write) - Python 3.14+: Auto-managed
- FalconPy 1.6.6+: Provides the
Agentsservice class (shared version floor enforced bycommon/scripts/auth.pyacross all skills, not just this one)
Core Workflows
📋 Inspecting Agent Definitions Before Recommending
CRITICAL: When evaluating agents from Claude Code's available agent types list (visible in system reminders) or from tool metadata, you MUST inspect the full agent definition before recommending or using it.
ID Disambiguation - CRITICAL
Use version_group_id, NOT agent_id (or just id):
version_group_id→ The stable identifier across all versions of an agent → USE THISagent_idorid→ A specific version instance → Using this will fail with "failed to retrieve agent"
Where to find version_group_id:
- In agent types list metadata: Look for
version_group_idfield - In tool discovery output: Listed as "Version group:" or
version_group_id - In agent metadata: Extract from
version_grouporversion_group_idfield
What Version You'll See - CRITICAL
When you inspect an agent using version_group_id, agent_get.py returns:
- Latest PUBLISHED version (if one exists) ← Most common case
- Latest version (if no published version exists) ← Draft only
Important implications:
- Modifying a published agent creates a DRAFT version → The draft is NOT returned by
agent_get.py - Inspection shows production behavior → You see what's actually running, not work-in-progress
- Draft changes are invisible until published → If an agent was recently modified but not published, you won't see those changes
Example:
Published agent: v1 (system prompt: "You are a security analyst...")
↓ User modifies agent
Draft version: v2 (system prompt: "You are an expert security analyst...")
↓ Inspect with agent_get.py
Result: Shows v1 (published), NOT v2 (draft)
↓ Publish v2
↓ Inspect with agent_get.py
Result: Shows v2 (now published)Example from tool discovery:
• Vulnerability Response Agent
- ID: agents/0ad0ec8a-c49a-4784-9541-8c931aa0a365/... ← DON'T USE THIS
- Version group: 4ff1fc7a-2181-405d-a6d7-95b549eb7a10 ← USE THISWorkflow for Agent Inspection:
- Extract
version_group_id(NOTagent_idorid) from the metadata - Get the complete definition:
cd ${CLAUDE_PLUGIN_ROOT}/skills/agents ../../scripts/python.sh scripts/agent_get.py --ids <version_group_id> - Inspect the full definition:
- System prompt - does it match the task's needs?
- Tools - does it have the right capabilities?
- Model - is it appropriate for the complexity?
- Knowledge base IDs - does it have relevant context?
- Only recommend/use if the actual definition is a strong fit for the task
Why: Agent names and brief descriptions can be misleading. A "security-agent" might be configured for compliance checks, not threat hunting. The system prompt and tool configuration reveal the true capabilities.
Example - Correct ID Usage:
# Tool metadata shows:
# ID: agents/0ad0ec8a-c49a-4784-9541-8c931aa0a365/vulnerability_response_agent
# Version group: 4ff1fc7a-2181-405d-a6d7-95b549eb7a10
# ❌ WRONG - Using agent_id:
../../scripts/python.sh scripts/agent_get.py --ids 0ad0ec8a-c49a-4784-9541-8c931aa0a365
# Result: "failed to retrieve agent"
# ✅ CORRECT - Using version_group_id:
cd ${CLAUDE_PLUGIN_ROOT}/skills/agents
../../scripts/python.sh scripts/agent_get.py --ids 4ff1fc7a-2181-405d-a6d7-95b549eb7a10
# Result: Full agent definition with system prompt, tools, model
# Review output to confirm it has:
# - System prompt mentioning the specific security domain (e.g., "vulnerability triage")
# - Relevant tools (e.g., falcon_platform:get_vulnerabilities, not just generic tools)
# - Appropriate model for the task complexity🔍 Analyze Agent Execution (START HERE for optimization)
When to use: User asks to "improve", "optimize", "debug", or "analyze" an agent.
- Analyze execution patterns →
analyze_agent.py --agent-id <uuid> --days 7 --verbose- Examines actual execution traces (not just statistics)
- Identifies tool usage patterns, error contexts, version changes
- Provides actionable prompt improvements with specific guidance
- Shows performance anomalies and root causes
- Review recommendations → Parse output for:
- 🔧 Unused tools → Remove or add usage guidance to prompt
- ⚠️ Error-prone tools → Add validation/error handling guidance
- ⏱️ Slow tools → Add timeout warnings or optimization hints
- 📊 Common tool sequences → Optimize prompt to guide workflows
- 💭 Excessive LLM calls → Make prompt more decisive
- 🔄 Version changes → Compare definitions to understand performance shifts
- Deep-dive specific traces → Use invocation IDs from analysis with
inspect_invocation.py(invocation skill) - Apply improvements → Update agent with
agent_upsert.pyusing recommended prompt changes
Example output:
💡 Recommendations
1. 🔧 Unused tools: falcon_platform:get_host_details
Either remove OR add: 'When user asks about host details, use falcon_platform:get_host_details to...'
2. ⚠️ Tool 'falcon_platform:search_hosts' has high error rate: 45%
Add validation: 'Before calling search_hosts, verify filter syntax...'
3. 📊 Common tool patterns:
- search_hosts → get_host_details → format_response (12x)
Consider optimizing prompt to guide this workflow explicitly.Create/Update Agent
CRITICAL FOR UPDATES: When updating an existing agent, preserve existing configuration unless explicitly instructed otherwise:
- Get current agent details →
agent_get.py --ids <agent-id>→ read current model, tools, model_config - Only modify what's requested → Keep existing model, tools, model_config unless user specifically asks to change them or you have strong reasoning
- Pass all fields to upsert → Even unchanged fields must be included in the upsert call
Workflow:
- For updates: Read existing agent first →
agent_get.py --ids <id>→ capture current config - Discover prerequisites only if changing tools/model:
models_search.py --limit 50(discovery skill) → capture a model ID if changing modeltools_get.py --search "specific capability"(discovery skill) → capture tool IDs if changing tools- If the tool family is known, filter it first with
tools_get.py --category <category> --search "specific capability"; see the discovery skill's category guide. This avoids similarly named tools from unrelated providers.- ⚠️ Use specific search terms: "host search", "detection query", "vulnerability scan", "logscale"
- ❌ Avoid generic terms: "falcon", "crowdstrike" (matches everything in Falcon platform, useless results)
- Query agents by filter (if you don't have agent ID) →
agent_search.py --filter "active_version.name:~'topic'"(substring, case-insensitive) → returns agent IDs - Create or update agent →
agent_upsert.py:- Create: omit
--id, specify all required fields (returns agent ID + version ID) - Update: include
--id <uuid>, pass existing values for unchanged fields (creates new version, returns version ID)
- Create: omit
- PROPOSE test invocation before publishing → Offer to test the new version:
- Use invocation skill:
invoke_version.py --agent-id <agent-id> --version-id <version-id> --message "Test prompt" - Note: Draft versions CAN be invoked via
invoke_version.py(no publish required for testing) - Poll for completion:
get_messages.py --id <invocation-id> - If issues found, return to step 4 to adjust
- Use invocation skill:
- Publish agent →
agent_publish.py --id <agent-uuid> --version-id <version-uuid>→ makes version the published default
Stop after each script; confirm with user before proceeding.
Script Reference
| Script | Purpose | Key Flags |
agent_search.py | Query agent IDs by FQL filter | --filter "active_version.name:~'term'" (substring), --limit 100 |
agent_get.py | Get agent entities by IDs | --ids <id> [id...] |
agent_list.py | List agents as a table (Name/Description/Last modified/Last modified by/Created by/Status) | --name-contains, --created-by, --modified-since, --modified-before, --status {published,unpublished}, --sort {name,updated_at} (default updated_at), --order {asc,desc} (default desc), --limit |
agent_upsert.py | Create or update an agent | --name, --model, --system-prompt, --tools, --knowledge-base-ids, optional --id |
agent_publish.py | Publish agent (make invocable) | --id <uuid>, --version-id <uuid> |
analyze_agent.py | Analyze execution patterns & suggest improvements | --agent-id <uuid>, --days 7, --verbose |
All scripts support --help and --json.
Finding/listing agents by topic, name, date, or status
For a plain topic/name substring search, use agent_search.py with the :~ fuzzy operator —
one API call, works at any tenant size:
../../scripts/python.sh scripts/agent_search.py --filter "active_version.name:~'root access'"
../../scripts/python.sh scripts/agent_search.py --filter "active_version.description:~'privilege escalation'"For combined criteria (name substring + date range + publish status all at once), sorted
table output, or pagination — use agent_list.py instead, which pages through all agents and
filters/sorts client-side (slower on large tenants, but supports multiple simultaneous filters
that agent_search.py's single --filter string doesn't conveniently combine):
../../scripts/python.sh scripts/agent_list.py --name-contains "root access"
../../scripts/python.sh scripts/agent_list.py --modified-since 2026-09-01 --status published
../../scripts/python.sh scripts/agent_list.py --limit 5 # most recently modified first (default sort)See references/fql-filters.md for the full confirmed filter/operator behavior — it has a
"History" section on how the wrong conclusion got written into this doc twice before the :~
operator was found; read it before trusting a new negative finding of your own.
--sort only accepts name or updated_at — there is no modified value, even though the
flag is about modification date; the sortable field is named updated_at. Since updated_at desc
is already the default, "most recent N agents" needs only --limit N, no --sort/--order.
Always paste the resulting table directly into your chat response — do not just point at the tool output. Script stdout is plain text to the harness; it is not markdown-rendered. Only text you write directly in your own reply renders as an actual table for the user.
Pagination: agent_list.py defaults to --limit 20 and prints a trailer line after the table:
Showing 1-20 of 47 matching agent(s). and, if more remain, MORE_RESULTS_AVAILABLE
next_offset=20 remaining=27. When you see that trailer, do NOT silently fetch/dump everything or
silently truncate — tell the user how many more there are and ask if they want the next page (e.g.
via AskUserQuestion or a plain question). If they say yes, re-run with --offset <next_offset>
(same filters/sort) to get the next page.
Always paste the resulting table directly into your chat response — do not just point at the tool output. Script stdout is plain text to the harness; it is not markdown-rendered. Only text you write directly in your own reply renders as an actual table for the user.
Input/Output Format Types
Agents support structured input validation and output formatting:
Input Formats
unstructured(default): Free-form text or JSON input, no schema validationjson_with_schema: JSON input validated against a JSON Schema
Output Formats
unstructured(default): Free-form text responsehtml: HTML-formatted responsemarkdown: Markdown-formatted responsejson: JSON-formatted response (no schema enforcement)json_with_schema: JSON response validated against a JSON Schema
Usage Examples
Add input validation:
../../scripts/python.sh scripts/agent_upsert.py \
--id <agent-id> \
--input-format json_with_schema \
--input-schema '{
"type": "object",
"properties": {
"prompt": {"type": "string", "description": "User question"},
"severity": {"type": "string", "enum": ["low", "medium", "high"]}
},
"required": ["prompt"]
}'Request structured JSON output:
../../scripts/python.sh scripts/agent_upsert.py \
--id <agent-id> \
--output-format json_with_schema \
--output-schema '{
"type": "object",
"properties": {
"risk_score": {"type": "number"},
"recommendations": {"type": "array", "items": {"type": "string"}}
},
"required": ["risk_score"]
}'Usage Examples
Query agents by name
../../scripts/python.sh scripts/agent_search.py --filter "active_version.name:~'Security'" --limit 10Get agent details
../../scripts/python.sh scripts/agent_get.py --ids <agent-id>Create a new agent
../../scripts/python.sh scripts/agent_upsert.py \
--name "Root Access Hunter" \
--description "Detects unauthorized root access" \
--model bedrock.claude-4-6-sonnet \
--system-prompt "You are a security agent that analyzes root access patterns..." \
--tools <tool-id-1> <tool-id-2> \
--knowledge-base-ids <kb-id>Update existing agent (creates new version)
# CRITICAL: Read current agent first to preserve existing config
../../scripts/python.sh scripts/agent_get.py --ids <agent-id>
# Note current: model, tools, model_config, knowledge_base_ids
# Update ONLY the system prompt, keep everything else the same
../../scripts/python.sh scripts/agent_upsert.py \
--id <agent-id> \
--system-prompt "Updated prompt with better instructions..." \
--model <same-model-from-get> \
--tools <same-tools-from-get> \
--knowledge-base-ids <same-kbs-from-get>
# Pass ALL fields even if unchanged - API requires complete definitionPublish agent
../../scripts/python.sh scripts/agent_publish.py \
--id <agent-id> \
--version-id <version-id>Analyze agent performance (last 7 days)
../../scripts/python.sh scripts/analyze_agent.py \
--agent-id <agent-id> \
--days 7 \
--verboseWhat the analysis provides:
- Version Detection - Shows if agent definition changed
- Tool Usage Patterns - Actual execution sequences (e.g., "search → get → format (12x)")
- Actionable Prompt Improvements - Specific guidance with examples
- Error Context - Which tools fail and why
- Performance Anomalies - Version comparison with root cause
- Missing Capabilities - Suggests additional tools based on patterns
See "Core Workflows → Analyze Agent Execution" above for detailed examples.
Common Pitfalls / Counter-Rationalizations
| Thought | Reality |
| "The agent name tells me what it does" | Inspect first. Names can be misleading. Get the full definition with agent_get.py --ids <version_group_id> to see the actual system prompt, tools, and capabilities before recommending. |
| "I'll use the agent ID from the tool metadata" | Use version_group_id instead. The agent_id or id field refers to a specific version instance. Use version_group_id to retrieve the current definition. Using agent_id returns "failed to retrieve agent". |
| "I just modified the agent, so inspection will show my changes" | Modifications create drafts. agent_get.py returns the latest published version, not draft versions. Your changes are invisible until you publish them with agent_publish.py. |
| "I'll guess the agent ID" | Query first. Agent IDs are UUIDs; guessing fails. Use agent_search.py. |
| "I can update just the prompt" | Read agent first, pass all fields. When updating, get current config with agent_get.py, then pass ALL fields (model, tools, model_config, etc) even if unchanged. Omitted fields may be lost. |
| "I'll give generic optimization advice" | Analyze first. Run analyze_agent.py to get actionable insights from actual traces. Generic advice doesn't account for version changes, tool patterns, or error contexts. |
| "The agent is slow because of the model" | Check execution patterns. Could be tool sequences, excessive LLM calls, or unused/misconfigured tools. Analysis shows root cause. |
| "I'll enable the agent after publishing" | Publish-only scope. No enable/disable in v1. Publish = make invocable. |
| "I can delete an agent" | Delete excluded. No DELETE operations per v1 design. Agents persist. |
| "Model ID is just the model name" | Model ID is a UUID. Query models first with discovery skill, or user provides the UUID. |
| "agent_upsert returns only the agent ID" | It also returns the version ID. The version ID is required for agent_publish.py --version-id. |
| "Publish just needs the agent ID" | Publish needs BOTH agent ID and version ID. Use PATCH with params={id} and body={version_id, is_published:true}. |
| "I need to list invocations to analyze an agent" | Use spans APIs instead. Query spans by agent_id, hydrate them, extract invocation_id from attributes. Use analyze_agent.py. |
| "I'll filter agent_search by name" | Top-level name doesn't work; active_version.name:~'term' does — use that. name:'...' on queries/agents/v2 silently matches nothing regardless of quoting/wildcard. The correct nested field is active_version.name, and the correct substring operator is :~ (fuzzy, case-insensitive, matches anywhere) — NOT wildcard *'...' syntax, which also silently returns zero on this endpoint. active_version.description:~'term' works too. See references/fql-filters.md (which itself was wrong twice before this was nailed down — read the "History" section there before trusting a new negative finding). |
| "I'll pass multiple ids to agent_get as a comma-joined string" | Must be a real list param. params={"ids": ",".join(ids)} gets treated as one literal id and fails with "failed to retrieve agent". Use params={"ids": ids} (a list). See references/api-reference.md. |
| "I'll show the user a table by printing it from the script" | Tool stdout isn't markdown-rendered. Paste the table into your own chat response text, or the user just sees raw pipe-delimited text. |
"I'll pass --sort modified since the flag is about modification date" | --sort only accepts name or updated_at. The sortable field is named updated_at, not modified, even though --modified-since/--modified-before exist as separate filter flags. Run agent_list.py --help if unsure, don't infer flag values from naming patterns. |
| "I'll write a severity/status/category enum from what sounds right" | Query the tenant's actual values first. A rewritten system prompt or --input-schema/--output-schema that hardcodes an assumed enum (e.g. "enum": ["low", "medium", "high"]) can silently mismatch the tenant's real configured values, breaking the workflow it was meant to automate. Check real invocation inputs/outputs (e.g. via analyze_agent.py, or inspect_invocation.py on a known trace) or whatever source of truth the workflow already uses before encoding an enum. |
Reading Guide
| Task | Reference Doc |
| API endpoints and parameters | references/api-reference.md |
| FQL filter syntax | references/fql-filters.md |
| OAuth 2.0 + scopes | ../setup/SKILL.md |
FalconPy classes
This skill uses the native typed Agents class (query_studio_agents, get_studio_agents,
create_or_update_agent, update_agent) and AgentVersions, via auth.get_agents_client() and
auth.call_native().
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

