CrowdStrike Falcon
Falcon Foundry Skills
Version
CI
CrowdStrike Falcon Foundry 앱을 구축하기 위한 AI 코딩 어시스턴트 스킬입니다. 자연어 프롬프트만으로 Foundry 앱을 구축할 수 있습니다. API 통합, 워크플로우, UI 페이지, 함수, 컬렉션, AI 에이전트 및 지식 기반 등 모든 요소를 Foundry CLI를 통해 스캐폴딩하고 Falcon 콘솔에 배포합니다.
시작하기 (Getting Started)
전제 조건 (Prerequisites)
- Foundry CLI:
brew tap crowdstrike/foundry-cli && brew install crowdstrike/foundry-cli/foundry로 설치하거나, Windows용 다운로드를 이용합니다.
- CrowdStrike 계정: Falcon Foundry 접근 권한이 필요합니다.
- 인증 (Authentication):
foundry login을 실행하여 인증합니다.
- AI 코딩 어시스턴트: Claude Code, Codex, Copilot CLI, Cursor, Antigravity CLI 또는 참조 문서를 로드할 수 있는 모든 도구를 사용합니다.
설치 (Install)
| Assistant | Command | Marketplace |
|---|
| Claude Code | /plugin install crowdstrike-falcon-foundry | Anthropic |
| ... | | |
[!NOTE]
Codex는 로그인 방식에 따라 두 가지 설치 경로가 있습니다. 위의 명령어는 큐레이션된 CLI 마켓플레이스에서 설치하며, 이는 API 키 및 Amazon Bedrock 세션을 로드합니다. 만약 Codex를 ChatGPT 계정으로 인증했다면, 해당 마켓플레이스는 로드되지 않으므로 대신 Codex 내부에서 /plugins를 실행하고 crowdstrike를 검색한 후 결과에서 설치해야 합니다.
다섯 가지 어시스턴트 모두 종단 간(end to end) 검증을 완료했습니다. 스킬은 로컬 클론에서 로드된 다음, 아래 예제 프롬프트를 사용하여 라이브 Falcon Foundry 테넌트에 앱을 구축하고 배포하는 데 사용되었습니다.
Claude Code를 사용하여 로컬 개발을 하려면 claude --plugin-dir /path/to/foundry-skills를 사용하세요. 이 스킬들은 Agent Plugins 형식을 따르며, 네이티브 Codex 검색을 위해 .codex-plugin/plugin.json 매니페스트를 포함합니다. 전체 워크스루는 블로그 게시물을 참조하세요.
<details>
<summary><strong >로컬 클론에서 설치하기</strong> (개발 또는 브랜치 테스트용)</summary>
git clone https://github.com/CrowdStrike/foundry-skills.git
| Assistant | Command |
|---|
| Claude Code | claude --plugin-dir /path/to/foundry-skills |
| ... | |
Codex는 --plugin-dir를 지원하지 않습니다. 대신, 스킬을 ~/.agents/skills/에서 검색하며, 스킬당 하나의 심볼릭 링크(symlink)를 사용합니다: | |
mkdir -p ~/.agents/skills
for skill in /path/to/foundry-skills/skills/*/; do
ln -s "${skill%/}" ~/.agents/skills/
...
~/.agents/skills/는 평평하고 공유되는 네임스페이스입니다. foundry-skills의 스킬 이름은 fusion-skills와 겹치지 않으므로, 둘 다 함께 심볼릭 링크할 수 있습니다. 마켓플레이스나 --plugin-dir 설치 방식은 스킬을 crowdstrike-falcon-foundry:<skill>로 네임스페이스화하여 이 문제를 완전히 우회합니다. 수정 사항은 즉시 적용됩니다. Codex를 재시작하여 다시 인덱싱하세요.
</details>
사용법
예제 프롬프트
이 프롬프트는 전체 스킬 세트—API 통합, 워크플로우, UI—를 활용합니다:
Okta API와 openapi로 연동되는 Falcon Foundry 앱을 만들어 주세요. 이 앱의 listusers 엔드포인트를 Falcon Fusion SOAR에 공유해 주세요. 그런 다음, 사용자의 목록을 이메일이나 인쇄할 수 있도록 온디맨드로 실행 가능한 워크플로우를 만드세요. 마지막으로, listusers 엔드포인트를 호출하고 결과를 표시하는 UI 확장을 만들어 주세요.
플러그인 스킬 라우팅 작동 방식
Claude Code, Codex, Copilot CLI, Cursor에서 리포지토리 기반으로 설치된 환경에는 적절한 스킬이 사용되도록 보장하는 훅(hook)이 포함되어 있습니다. Codex는 실행 전에 /hooks를 통해 번들링된 훅을 검토하고 신뢰해야 합니다. Cursor는 이들을 .cursor-plugin/plugin.json에서 로드합니다:
-
UserPromptSubmit 훅 — Foundry 명사와 쌍을 이루는 동작 동사(action verb)와 일치합니다. 예: "foundry 앱 생성". 명시적인 CLI 명령어 및 스킬 요청도 이를 트리거합니다.
-
PreToolUse 훅 — Foundry 의도가 감지되면, Foundry 워크플로우 스킬을 사용하도록 비차단(non-blocking) 권고 알림을 주입합니다. 어시스턴트는 여전히 모든 도구를 정상적으로 사용할 수 있습니다. 예외는 foundry api-integrations create로, OpenAPI 사양(spec)이 Falcon Foundry에 적응될 수 없을 때 차단됩니다. Claude Code에서는 작업이 Foundry 앱 관련일 경우 superpowers:brainstorming 호출 시 Foundry 워크플로우 스킬로 전환하라는 조언을 받습니다.
-
PreToolUse 훅 (CLI 가드) — 셸 명령어(shell commands)를 확인하고, Foundry CLI 명령어 중 --no-prompt 플래그가 누락된 경우(오류: EOF 방지)와 앱 구조를 위한 수동 디렉터리 생성을 확인합니다(잘못된 manifest.yml 방지). 이는 차단하는 것이 아니라 권고 사항을 추가하는 형태의 조언적 기능입니다. 따라서 문제가 감지되었을 때만 이를 볼 수 있습니다. Cursor의 셸 도구는 Shell이며, 이 가드는 이를 Claude의 Bash와 동일하게 처리합니다.
훅은 프롬프트와 도구 I/O를 관찰하여 Foundry 관련 동작에 대해 키워드 일치(keyword-match)를 수행하며, 데이터가 세션 외부로 나가지 않습니다.
스킬 심볼릭 링크(skill symlinks)를 사용하여 로컬 Codex를 설치했거나 번들링된 훅을 로드하지 않는 다른 어시스턴트의 경우, 문서화된 --no-prompt 가드레일을 적용하고 OpenAPI 적응 도우미를 명시적으로 실행해야 합니다. 스킬별 도우미는 해당 SKILL.md 파일 옆에 위치하여 에이전트 스킬(Agent Skills)과 플러그인 설치가 자체 포함적(self-contained)으로 유지됩니다. 이러한 패키징은 Foundry CLI 연결성과 분리되어 있으며, 이는 디버깅 스킬의 샌드박스 진단(sandbox diagnostics)에서 다룹니다.
스킬 (Skills)
| Skill | 목적 |
|---|
development-workflow | 주 오케스트레이터 — 전체 앱 수명 주기(lifecycle)를 조정합니다 |
| ... | |
아키텍처
이 스킬들은 허브 앤 스포크 패턴을 따릅니다. development-workflow는 요구사항을 구문 분석하고, 스캐폴딩(scaffolding)을 위한 CLI 명령을 실행하며, 기능별 구현을 하위 스킬에 위임하는 오케스트레이터입니다:
graph TD
O["development-workflow<br/>(오케스트레이터)"]
...
사용 사례 (Use Cases)
use-cases/ 디렉토리에는 CrowdStrike Tech Hub 블로그 게시물에서 추출된 실제 구현 패턴들이 포함되어 있습니다:
- API 페이지네이션 전략(API pagination strategies)
- UI 확장을 통한 탐지 정보 강화(Detection enrichment with UI extensions)
- 함수를 이용한 LogScale 데이터 수집(LogScale data ingestion from functions)
- 타사 데이터를 이용한 조회 테이블 강화(Lookup table enrichment with 3rd-party data)
- 사용자 지정 SOAR 액션(Custom SOAR actions)
- CSV/JSON으로의 NGSIEM 쿼리 내보내기(NGSIEM query export to CSV/JSON)
- 인증된 앱 게시(Publishing certified apps)
- 그 외 (자세한 내용은 use-cases/README.md 참조)
권장 보조 도구: Superpowers
이 스킬들은 구조화된 계획, TDD(Test-Driven Development) 원칙, 코드 검토 워크플로우를 추가하는 obra/superpowers와 잘 어울립니다. Foundry 스킬은 Foundry 전용 CLI 및 플랫폼 지식을 처리하는 반면, Superpowers는 일반적인 소프트웨어 엔지니어링 모범 사례(best practices)를 제공합니다.
작동 방식에 대한 자세한 내용은 skills/development-workflow/references/superpowers-integration.md을 참조하십시오.
참고: without-superpowers 경로는 Foundry 스킬이 처음부터 완전한 제어권을 가지기 때문에 더 신뢰할 수 있는 결과를 생성합니다. Superpowers 브레인스토밍은 먼저 로드되어 계획을 만든 후 Foundry 스킬들이 읽히는데, 이는 Foundry 전용 패턴을 따르지 않을 수 있습니다.
Foundry CLI 빠른 참고 자료
문제 해결 (Troubleshooting)
Skills가 호출되지 않는 경우
만약 Claude가 Foundry skills를 자동으로 사용하지 않는다면, 명확한 행동 동사(action verb)와 Foundry 관련 명사(Foundry noun)를 사용하여 프롬프트를 작성하세요. (예: "foundry 앱을 생성해 줘", "foundry 함수를 수정해 줘"). 또한 언제든지 "Foundry skills 사용"이라고 말하여 방향을 전환할 수도 있습니다.
CLI 인증
foundry profile active
foundry login
foundry profile list
배포 실패
foundry api-integrations create 직후에 즉시 유효성 검사 실행 (foundry apps validate --no-prompt) — Foundry의 서버 측 OpenAPI 파서는 redocly lint보다 엄격하여 대용량 벤더 스펙을 거부할 수 있습니다.
- 프로젝트 루트 디렉토리에서
foundry apps deploy를 실행합니다.
- 체계적인 문제 해결을 위해
debugging-workflows skill을 확인하세요.
테스트 (Testing)
세 가지 스크립트가 서로 다른 수준에서 skill 변경 사항을 검증합니다. 모두 macOS 또는 Linux(bash)가 필요합니다.
팁: 장시간 실행되는 테스트는 caffeinate -i로 감싸서 macOS가 중간에 절전 모드로 진입하는 것을 방지하세요:
caffeinate -i ./run-ab-test.sh --fresh 5
Hook 테스트
네 가지 hook 스크립트(skill router, superpowers bridge, CLI guard, session start)에 대한 단위 테스트입니다. 빠르고 API 호출이 없으며 Foundry CLI가 필요하지 않습니다. 모든 hook 변경 후 실행하세요.
Skill 테스트 (단일 실행)
./test-skill.sh
./test-skill.sh --runs 1
./test-skill.sh --plugin-dir .
예제 Okta 프롬프트를 처음부터 끝까지 실행합니다: 앱을 스캐폴딩하고, 배포하며, 결과를 점수화합니다. 각 실행은 510분이 소요되며 약 510M 토큰이 사용됩니다. 결과는 /tmp/foundry-skill-test/에 저장됩니다.
앱 검증 (test-skill 이후)
SKIP_BROWSER=1 ./verify-apps.sh
OKTA_DOMAIN=... OKTA_API_KEY=... ./verify-apps.sh
test-skill.sh 또는 A/B 테스트로 생성된 앱을 검증합니다. OpenAPI 스펙을 분석하고, 앱을 릴리스하며, 선택적으로 브라우저 자동화를 통해 Falcon 콘솔에 설치합니다.
./verify-apps.sh
./verify-apps.sh --green
./verify-apps.sh --dir /path
A/B 테스트 (main 대 로컬 브랜치)
./run-ab-test.sh
./run-ab-test.sh 1
./run-ab-test.sh 5 --ref v1.0.0
...
기준선 참조 스킬(RED)을 로컬 브랜치 스킬(GREEN)과 비교합니다. --ref 플래그는 모든 git ref (태그, 브랜치, 커밋 SHA)를 허용하며 기본값은 main입니다. 결과는 /tmp/foundry-skill-ab/baseline.json 및 /tmp/foundry-skill-ab/optimized.json에 저장됩니다.
기여하기 (Contributing)
스킬들은 누군가 앱을 빌드하는 데 사용될 때마다 개선됩니다. 만약 어려운 부분에 부딪히거나 Claude가 특정 패턴 처리에서 어려움을 겪는 것을 발견하면, 스킬이 이를 더 잘 처리하도록 가르칠 수 있습니다.
스킬 사용 후 개선하기
- 이 리포지토리를 클론하고 AI 코딩 어시스턴트를 설정합니다 ( Getting Started 참조).
- 다중 기능 프롬프트를 시도해 봅니다 (위의 Example prompt 참조).
- Claude가 어려움을 겪거나, 재시도하거나, 잘못된 출력을 생성하는 패턴을 관찰합니다.
- 세션이 끝날 때, Claude에게 스킬을 직접 수정하도록 요청합니다:
What did you learn from this session that could improve the Foundry skills?
Clone https://github.com/CrowdStrike/foundry-skills.git,
create a branch, update the skills with this knowledge, and
...
Claude는 브랜치 관리, 스킬 편집 및 PR 생성을 처리합니다. Claude가 앱을 구축하는 데 어려움을 겪더라도, 결국에는 해결해내는 경우가 많습니다. 이 단계는 그러한 학습 과정을 포착하여 다음 세션이 더 빠르고 토큰 사용량이 적게 되도록 합니다.
개발 워크플로우
- 레포지토리를 복제합니다 (["Getting Started"] 참조)
skills/*/SKILL.md에서 스킬 파일을 편집합니다
./test-hooks.sh를 실행하여 훅(hook)을 검증합니다
- 빠른 엔드투엔드 확인을 위해
./test-skill.sh --runs 1로 테스트합니다
- PR을 열기 전에 main 브랜치와 비교하기 위해
./run-ab-test.sh 1을 실행합니다
릴리스 프로세스
이 스킬들을 릴리스하는 것은 매우 쉽습니다! 다음 명령어를 실행하기만 하면 됩니다:
이 명령어는 시맨틱 버전 번호 증가(major/minor/patch)를 안내하고, plugin.json, marketplace.json, README 배지, 모든 SKILL.md 파일, 그리고 CHANGELOG 날짜의 버전을 업데이트한 다음, 릴리스 브랜치와 PR을 생성합니다. PR이 승인되고 병합된 후에는 main에 태그를 지정하는 초안 GitHub 릴리스를 만듭니다: