You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Make sub-skill routing survive a single-entry-point install
A single-entry-point install works: with only development-workflow discoverable, an assistant reads it, locates the sub-skills on disk, and scaffolds as well as the ten-skill control. But nothing in the skills said that was the arrangement, so it worked by inference. Two body-text changes make it explicit.
The orchestrator now documents that sub-skills are siblings at `../<name>/SKILL.md` and what to do when a capability-level request lands on it directly: read the sub-skill from disk first, then skip to the Step 5 CLI command when a manifest already exists rather than re-running the whole creation flow. It also states that this never overrides the Cross-Plugin Advisory, so a standalone Fusion workflow request is still a redirect and not a capability to add.
The nine sub-skills each gain one line back to the orchestrator. Only e2e-testing referenced it before, and only in a footer, so an assistant without routing hooks could select a sub-skill and never see the CLI prerequisite check, the scaffolding order, or manifest coordination. The line is conditional on the orchestrator not having run, which makes it a no-op wherever a hook already forces it.
Deliberately not touching the trigger descriptions. Widening the orchestrator's DO NOT TRIGGER clause would fix the remaining Codex gap — a capability-only request on a single-entry-point install still matches nothing — but descriptions are the skill-selection surface, and adding capability-level triggers there risks pulling a 5.3k-token orchestrator into Claude Code sessions that need one sub-skill. All ten descriptions are byte-identical to main and the description budget is unchanged at 4432 chars, so selection behaviour cannot have moved. That trade needs A/B evidence first.
Budget: the orchestrator and functions-falcon-api had no room, so local e2e test steps moved to development-workflow's advanced-patterns reference and the multi-API enrichment example moved to functions-falcon-api's, both linked from where they were. workflows-development's two near-duplicate HTTP Actions callouts merged into one. Every SKILL.md is under the 5500-token cap.
Copy file name to clipboardExpand all lines: CHANGELOG.md
+5Lines changed: 5 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -12,6 +12,11 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/), and this
12
12
-**Agent Plugins manifest** — A root `plugin.json` conforming to the [Agent Plugins](https://agent-plugins.org) 1.0.0 spec, so any conforming client can discover the plugin alongside the existing Claude and Codex manifests. CI validates it and `release.sh` bumps its version with the others.
13
13
- US-3 cloud region to the cloud-region documentation: added `us-3` to the `FOUNDRY_CLOUD_REGION` value lists (headless-operation reference, e2e-testing env var table) and the multi-cloud deployment section. Foundry CLI 2.0.2 added US-3 support; the base URL (`api.us-3.crowdstrike.com`) is in FalconPy as of v1.6.4.
14
14
15
+
### Fixed
16
+
17
+
-**Sub-skill routing survives a single-entry-point install** — `development-workflow` now documents that sub-skills live beside it on disk as `../<name>/SKILL.md`, and how to handle a capability-level request that lands on the orchestrator: read the sub-skill from disk first, then skip straight to the CLI command when `manifest.yml` already exists. Assistants that register only the orchestrator no longer have to infer this. The orchestrator's trigger description is unchanged, so skill selection on a fully-registered install behaves exactly as before.
18
+
-**Sub-skills point back to the orchestrator** — All nine sub-skills now link to `development-workflow` near the top of the file, so an assistant without routing hooks that selects a sub-skill directly still finds the CLI prerequisite check, scaffolding order, and manifest coordination. Previously only `e2e-testing` mentioned the orchestrator, and only in a footer.
Copy file name to clipboardExpand all lines: skills/api-integrations/SKILL.md
+2Lines changed: 2 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -21,6 +21,8 @@ metadata:
21
21
>
22
22
> **Note:** For `api-integrations create`, always include `--description` — the CLI still prompts for it even with `--no-prompt` if omitted.
23
23
24
+
> **Part of a suite.** If `development-workflow` has not already run, and this is a new app or its first capability, load [development-workflow](../development-workflow/SKILL.md) first — it owns the CLI prerequisite check, scaffolding order, and manifest coordination.
25
+
24
26
This skill covers exposing external APIs (third-party services or CrowdStrike Falcon APIs) to the Falcon Foundry platform via OpenAPI/Swagger specifications. These integrations make API operations available to Falcon Fusion SOAR workflows, Foundry UI extensions, Foundry Functions, and other Foundry capabilities.
25
27
26
28
**API integrations are how Foundry manages credentials.** There is no secrets system, no encrypted env vars, and no key vault. When you register an API integration, the platform collects credentials at install time and manages tokens automatically. This is why functions MUST call third-party REST APIs through `APIIntegrations().execute_command_proxy()` — not via raw HTTP with env vars.
Copy file name to clipboardExpand all lines: skills/collections-development/SKILL.md
+2Lines changed: 2 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -19,6 +19,8 @@ metadata:
19
19
>
20
20
> You MUST design Collections with proper JSON Schemas, validation rules, and access patterns.
21
21
22
+
> **Part of a suite.** If `development-workflow` has not already run, and this is a new app or its first capability, load [development-workflow](../development-workflow/SKILL.md) first — it owns the CLI prerequisite check, scaffolding order, and manifest coordination.
23
+
22
24
Falcon Foundry Collections are NoSQL document stores with JSON Schema validation. They provide persistent storage for app data with CRUD operations, FQL queries, and schema enforcement.
Copy file name to clipboardExpand all lines: skills/debugging-workflows/SKILL.md
+2Lines changed: 2 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -15,6 +15,8 @@ metadata:
15
15
16
16
Systematic procedures for diagnosing and resolving common CrowdStrike Falcon Foundry development issues.
17
17
18
+
> **Part of a suite.** If `development-workflow` has not already run, and this is a new app or its first capability, load [development-workflow](../development-workflow/SKILL.md) first — it owns the CLI prerequisite check, scaffolding order, and manifest coordination.
└── Advise the Falcon Fusion plugin — see Cross-Plugin Advisory
66
66
```
67
67
68
+
### Routing When Sub-Skills Are Not Registered
69
+
70
+
Sub-skills live beside this one as `../<name>/SKILL.md`. On a single-entry-point install only this skill is discoverable, so capability-level requests land here — that is intended, not a mis-route. Read the sub-skill file from disk before writing any capability content, then:
71
+
72
+
-**`manifest.yml` already present** — skip Steps 1-2 and Step 4. Run the Step 3 prerequisite check, add the capability with its Step 5 CLI command, and follow Manifest Coordination.
73
+
-**No app yet** — run the full App Creation Flow.
74
+
75
+
This never overrides the Cross-Plugin Advisory below: a standalone Fusion workflow request is still a redirect, not a capability to add.
76
+
68
77
## Cross-Plugin Advisory (Fusion vs. Foundry)
69
78
70
79
A Falcon Fusion workflow can be authored **standalone** (no app wrapper) when it
@@ -288,27 +297,6 @@ When `manifest.yml` already exists, work is primarily editing existing files. Us
-`foundry api-integrations create` etc. — adding new capabilities
290
299
291
-
## Testing an Existing App Locally
292
-
293
-
When running e2e tests against a CrowdStrike/foundry-sample-* app on GitHub:
294
-
295
-
1.**Configure credentials** — copy `.env.sample` to `.env` in the `e2e/` directory and fill in valid Falcon credentials (username, password, TOTP secret, base URL) and app name. `APP_NAME` defaults to the repo name. `FALCON_` credentials must be for a non-SSO user because TOTP is used in e2e tests. This file is gitignored and required for local test runs.
296
-
297
-
2.**Align the app name** — the manifest `name` and the e2e test `APP_NAME` environment variable (in `.env`) must match for local test runs. CI pipelines typically rewrite the manifest name automatically (e.g., `${REPO}-ci-${PIPELINE_ID}`), so this only affects local development. Preferred approach: update the manifest `name` to match the repo name (e.g., `foundry-sample-logscale`) to avoid spaces and simplify artifact lookup. Remember to `git checkout manifest.yml` after deploy to revert ID changes.
Copy file name to clipboardExpand all lines: skills/development-workflow/references/advanced-patterns.md
+22Lines changed: 22 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -185,3 +185,25 @@ For action IDs in workflow YAML, use the `api_integrations.{name}.{operationId}`
185
185
## Deployment Nuance
186
186
187
187
`foundry apps deploy`requires `--change-type` and `--change-log`. The `--no-prompt` flag is available as a global Controller flag and skips the deployment confirmation prompt and TUI monitor, but is not required when all flags are provided. `foundry apps release` requires `--deployment-id`, `--change-type`, and `--notes` and works fully non-interactively when all three flags are provided.
188
+
189
+
## Testing an Existing App Locally
190
+
191
+
When running e2e tests against a CrowdStrike/foundry-sample-* app on GitHub:
192
+
193
+
1. **Configure credentials** — copy `.env.sample` to `.env` in the `e2e/` directory and fill in valid Falcon credentials (username, password, TOTP secret, base URL) and app name. `APP_NAME` defaults to the repo name. `FALCON_` credentials must be for a non-SSO user because TOTP is used in e2e tests. This file is gitignored and required for local test runs.
194
+
195
+
2. **Align the app name** — the manifest `name` and the e2e test `APP_NAME` environment variable (in `.env`) must match for local test runs. CI pipelines typically rewrite the manifest name automatically (e.g., `${REPO}-ci-${PIPELINE_ID}`), so this only affects local development. Preferred approach: update the manifest `name` to match the repo name (e.g., `foundry-sample-logscale`) to avoid spaces and simplify artifact lookup. Remember to `git checkout manifest.yml` after deploy to revert ID changes.
Copy file name to clipboardExpand all lines: skills/e2e-testing/SKILL.md
+2Lines changed: 2 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -17,6 +17,8 @@ End-to-end testing for Falcon Foundry apps using [Playwright](https://playwright
17
17
18
18
The library provides authentication, app install/uninstall, page objects, and configuration so each app only writes its app-specific tests.
19
19
20
+
> **Part of a suite.** If `development-workflow` has not already run, and this is a new app or its first capability, load [development-workflow](../development-workflow/SKILL.md) first — it owns the CLI prerequisite check, scaffolding order, and manifest coordination.
Copy file name to clipboardExpand all lines: skills/functions-development/SKILL.md
+2Lines changed: 2 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -24,6 +24,8 @@ metadata:
24
24
> 2. Implement structured JSON responses with proper status codes
25
25
> 3. Apply input validation before processing any request
26
26
27
+
> **Part of a suite.** If `development-workflow` has not already run, and this is a new app or its first capability, load [development-workflow](../development-workflow/SKILL.md) first — it owns the CLI prerequisite check, scaffolding order, and manifest coordination.
28
+
27
29
Falcon Foundry Functions are serverless handlers in Go or Python, executed inside the Foundry FaaS runtime. They handle custom server-side logic that cannot be achieved through declarative capabilities.
Copy file name to clipboardExpand all lines: skills/functions-falcon-api/SKILL.md
+4-29Lines changed: 4 additions & 29 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -21,6 +21,8 @@ metadata:
21
21
>
22
22
> The FalconPy `Detects` class is **removed**. Do not import it. Use `Alerts` for detection queries.
23
23
24
+
> **Part of a suite.** If `development-workflow` has not already run, and this is a new app or its first capability, load [development-workflow](../development-workflow/SKILL.md) first — it owns the CLI prerequisite check, scaffolding order, and manifest coordination.
25
+
24
26
This skill covers calling CrowdStrike Falcon APIs from within Foundry functions (serverless Go or Python code). Authentication is completely automatic when code runs inside Foundry function handlers — the platform handles all OAuth flows, token management, and credential injection.
25
27
26
28
For exposing external APIs to Foundry via OpenAPI specs, see **api-integrations** instead.
@@ -35,7 +37,7 @@ For exposing external APIs to Foundry via OpenAPI specs, see **api-integrations*
35
37
36
38
| Topic | Reference |
37
39
|-------|-----------|
38
-
| Retry decorator with exponential backoff, counter-rationalizations table |[references/advanced-patterns.md](references/advanced-patterns.md)|
Combining `Hosts` and `Alerts` in one handler follows the same query-then-get-details shape as above. See [references/advanced-patterns.md](references/advanced-patterns.md) for the full example.
Copy file name to clipboardExpand all lines: skills/functions-falcon-api/references/advanced-patterns.md
+33Lines changed: 33 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -82,3 +82,36 @@ if __name__ == '__main__':
82
82
| "Mocking is extra work" | Real API calls in tests are slow, flaky, and quota-consuming |
83
83
| "I can skip the FDK handler pattern" | Handler pattern is required for automatic auth injection |
84
84
| "I'll use the Detects class for detection queries" | The Detects API is deprecated (405 errors). Use `Alerts()` with `query_alerts_v2` — filter by `product:'detections'` to scope to detections only |
85
+
86
+
## Multi-API Enrichment
87
+
88
+
Combine `Hosts` and `Alerts` in a single handler to build host context. Each API follows the same query-then-get-details shape:
0 commit comments