These are usage examples, not tests. Runnable provider demos live here; automated tests live in
skills/**/test_skill.py(bundle) andtests/(framework and optional maintainer depth). Local-execute demo scripts are smoke-tested in CI viatests/test_examples_smoke.pyto guard against import and loader regressions. See TESTING.md.
Runnable examples in this directory show how to load Skillware skills, adapt them for a provider, execute local skill logic, and return tool results to an agent loop. After pip install skillware, run skillware examples or skillware list --examples from any directory to browse the index in the terminal; when no local examples/README.md is present, the index is fetched from GitHub (network required); see CLI reference. Provider setup details live in the usage guides:
- API keys for skills
- Gemini
- Claude
- OpenAI
- OpenAI-compatible hosts
- Enterprise cloud (Bedrock, Azure, Vertex)
- AWS Bedrock
- DeepSeek
- Ollama
- Install extras
- Agent loops
- Skill chaining —
SkillContext, namedchains:
Install the skill extra for each script (see Install extras), plus an SDK extra when the provider column is not local execute:
pip install "skillware[office_pdf_form_filler]" "skillware[gemini]"For local development with every skill and SDK:
pip install -e ".[dev,all,agents]"| Script | Skill ID | Provider | Required extra | Required env vars | Description |
|---|---|---|---|---|---|
mental_coach_demo.py |
wellness/mental_coach |
Local execute | [wellness_mental_coach] |
None | Demonstrates coaching, crisis escalation, and blocked clinical paths locally. |
korean_slang_demo.py |
linguistics/korean_slang |
Local execute | [linguistics_korean_slang] |
None | Offline Korean Gen-Z slang interpret, suggest, lookup, unmatched, and blocked-term filter. |
build_dataset_demo.py |
data_engineering/synthetic_generator |
Local execute (Gemini backend) | [data_engineering_synthetic_generator], [gemini] |
GOOGLE_API_KEY |
Generates a JSONL synthetic dataset with the synthetic generator skill. |
claude_pdf_form_filler.py |
office/pdf_form_filler |
Claude | [office_pdf_form_filler], [claude] |
ANTHROPIC_API_KEY |
Uses Claude with the PDF form filler skill to map instructions to fields. |
claude_tos_evaluator.py |
compliance/tos_evaluator |
Claude | [compliance_tos_evaluator], [claude] |
ANTHROPIC_API_KEY |
Runs a Claude tool loop for website automation policy review. |
claude_issue_resolver.py |
dev_tools/issue_resolver |
Claude | [dev_tools_issue_resolver], [claude] |
ANTHROPIC_API_KEY; optional GITHUB_TOKEN |
Claude loop for GitHub issue analysis; fetches issue data after prepare (sample: issue #123). |
claude_wallet_check.py |
finance/wallet_screening |
Claude | [finance_wallet_screening], [claude] |
ANTHROPIC_API_KEY, ETHERSCAN_API_KEY |
Screens an Ethereum wallet and returns the result through a Claude tool loop. |
deepseek_tos_evaluator.py |
compliance/tos_evaluator |
DeepSeek | [compliance_tos_evaluator], [openai] |
DEEPSEEK_API_KEY |
Uses the OpenAI-compatible DeepSeek API for terms-of-service evaluation. |
gemini_pdf_form_filler.py |
office/pdf_form_filler |
Gemini | [office_pdf_form_filler], [gemini] |
GOOGLE_API_KEY, ANTHROPIC_API_KEY |
Uses Gemini as the agent while the PDF skill calls Anthropic for form filling. |
gemini_tos_evaluator.py |
compliance/tos_evaluator |
Gemini | [compliance_tos_evaluator], [gemini] |
GOOGLE_API_KEY |
Runs the terms-of-service evaluator with a Gemini function-calling loop. |
gemini_wallet_check.py |
finance/wallet_screening |
Gemini | [finance_wallet_screening], [gemini] |
GOOGLE_API_KEY, ETHERSCAN_API_KEY |
Screens an Ethereum wallet with Gemini orchestration and Etherscan data. |
gemini_evm_tx_handler.py |
defi/evm_tx_handler |
Gemini | [defi_evm_tx_handler], [gemini] |
GOOGLE_API_KEY; for live swaps also AGENT_WALLET_PRIVATE_KEY, BASE_RPC_URL or ETHEREUM_RPC_URL. Set EVM_TX_HANDLER_EXAMPLE_DEMO=1 for mocked flow without keys. |
Resolve → quote → preview → execute buy flow via Gemini tool loop (or demo mode). |
claude_evm_tx_handler.py |
defi/evm_tx_handler |
Claude | [defi_evm_tx_handler], [claude] |
ANTHROPIC_API_KEY; for live swaps also AGENT_WALLET_PRIVATE_KEY, RPC URLs. Demo: EVM_TX_HANDLER_EXAMPLE_DEMO=1. |
Claude tool loop for structured DeFi intent and optional execute after confirmation. |
mica_claude_flow.py |
compliance/mica_module |
Claude | [compliance_mica_module], [claude] |
ANTHROPIC_API_KEY |
Runs a MiCA compliance agent loop through Claude. |
mica_ollama_flow.py |
compliance/mica_module |
Ollama | [compliance_mica_module]; install ollama separately |
None | Runs a local Ollama MiCA flow with prompt-mode tool calling. |
mica_rag_flow.py |
compliance/mica_module |
Gemini | [compliance_mica_module], [gemini] |
GOOGLE_API_KEY |
Runs the MiCA RAG flow with Gemini. |
ollama_skills_test.py |
finance/wallet_screening, office/pdf_form_filler, optimization/prompt_rewriter |
Ollama | [finance_wallet_screening], [office_pdf_form_filler], [optimization_prompt_rewriter]; install ollama separately |
ETHERSCAN_API_KEY, ANTHROPIC_API_KEY |
Loads multiple skills and tests prompt-mode tool calling with Ollama. |
ollama_tos_evaluator.py |
compliance/tos_evaluator |
Ollama | [compliance_tos_evaluator]; install ollama separately |
None | Runs the terms-of-service evaluator with local Ollama prompt-mode calls. |
openai_tos_evaluator.py |
compliance/tos_evaluator |
OpenAI | [compliance_tos_evaluator], [openai] |
OPENAI_API_KEY |
Runs the terms-of-service evaluator with OpenAI function calling. |
openai_compatible_host.py |
compliance/tos_evaluator |
Groq (OpenAI-compatible) | [compliance_tos_evaluator], [openai] |
GROQ_API_KEY, GROQ_MODEL |
Runs the terms-of-service evaluator through Groq's OpenAI-compatible API. |
bedrock_tos_evaluator.py |
compliance/tos_evaluator |
AWS Bedrock Converse | [compliance_tos_evaluator], [bedrock] |
AWS_REGION, BEDROCK_MODEL_ID; AWS credentials via IAM or env |
Runs the terms-of-service evaluator through Bedrock Converse tool use. |
secret_provider_demo.py |
finance/wallet_screening |
Local execute | [finance_wallet_screening] |
None | Host-injects ETHERSCAN_API_KEY via MappingSecretProvider and config= without setting os.environ. |
pii_guardrail_flow.py |
compliance/pii_masker |
Local execute | [compliance_pii_masker] |
None | Demonstrates local PII masking before passing text to an external agent. |
prompt_injection_firewall_demo.py |
security/prompt_injection_firewall |
Local execute | [security_prompt_injection_firewall] |
None | Offline prompt-injection scan and sanitization with no API keys. |
sanitize_input_chain_demo.py |
security/prompt_injection_firewall, optimization/prompt_rewriter |
Local execute | [security_prompt_injection_firewall], [optimization_prompt_rewriter] |
None | Named chain demo: firewall then rewriter with conditional skip (run_chain). |
skill_context_gemini_loop.py |
security/prompt_injection_firewall, monitoring/token_limiter |
Gemini (Phase 2) | [security_prompt_injection_firewall], [monitoring_token_limiter], [gemini] |
Optional GOOGLE_API_KEY and SKILL_CONTEXT_GEMINI_LIVE=1 for Phase 2 |
Phase 1 (default): offline SkillContext brief + tools. Phase 2: Gemini multi-tool loop via ctx.execute(). |
deceptive_ui_guard_demo.py |
security/deceptive_ui_guard |
Local execute | [security_deceptive_ui_guard] |
None | Offline deceptive UI scan using fixture HTML recreations of documented dark patterns (confirm shaming, drip pricing, forced continuity, mislabeled CTAs). |
prompt_compression_demo.py |
optimization/prompt_rewriter |
Local execute | [optimization_prompt_rewriter] |
None | Demonstrates prompt compression without a provider loop. |
context_optimizer_demo.py |
optimization/context_optimizer |
Local execute | [optimization_context_optimizer] |
None | Query-aware extractive selection from bundled sample policy (fastembed; first run may download model). |
context_optimizer_chain_demo.py |
security/prompt_injection_firewall, optimization/context_optimizer |
Local execute | [security_prompt_injection_firewall], [optimization_context_optimizer] |
None | Trust-boundary chain: firewall then optimizer before a hypothetical main LLM call. |
context_optimizer_gemini_loop.py |
optimization/context_optimizer |
Gemini (optional) | [optimization_context_optimizer], [gemini] |
Optional GOOGLE_API_KEY and CONTEXT_OPTIMIZER_GEMINI_LIVE=1 |
Optimizer selection then Gemini answer constrained to optimized_context. |
context_optimizer_claude_loop.py |
optimization/context_optimizer |
Claude (optional) | [optimization_context_optimizer], [claude] |
Optional ANTHROPIC_API_KEY and CONTEXT_OPTIMIZER_CLAUDE_LIVE=1 |
Optimizer selection then Claude answer constrained to optimized_context. |
novelty_extractor_demo.py |
data_engineering/novelty_extractor |
Local execute | [data_engineering_novelty_extractor] |
None | Demonstrates multi-turn corpus distillation using local embeddings with no API key. |
gemini_novelty_extractor.py |
data_engineering/novelty_extractor |
Gemini | [data_engineering_novelty_extractor], [gemini] |
GOOGLE_API_KEY |
Runs the novelty extractor with a Gemini function-calling loop. |
ollama_novelty_extractor.py |
data_engineering/novelty_extractor |
Ollama | [data_engineering_novelty_extractor]; install ollama separately |
None | Runs the novelty extractor with local Ollama prompt-mode calls. |
gemini_issue_resolver.py |
dev_tools/issue_resolver |
Gemini | [dev_tools_issue_resolver], [gemini] |
GOOGLE_API_KEY; optional GITHUB_TOKEN |
Gemini loop for GitHub issue analysis; fetches issue data after prepare (sample: issue #123). |
ollama_issue_resolver.py |
dev_tools/issue_resolver |
Ollama | [dev_tools_issue_resolver]; install ollama separately |
optional GITHUB_TOKEN; OLLAMA_MODEL (default gemma4:e2b) |
Ollama prompt-mode loop for GitHub issue analysis (sample: issue #123). |
token_limiter_loop.py |
monitoring/token_limiter |
Local execute | [monitoring_token_limiter] |
None | Simulates a runaway task hitting a token ceiling with deterministic budget checks. |
gemini_token_limiter.py |
monitoring/token_limiter |
Gemini | [monitoring_token_limiter], [gemini] |
Optional GOOGLE_API_KEY for Phase 2 live loop |
Local budget simulation plus optional Gemini tool loop. |
claude_token_limiter.py |
monitoring/token_limiter |
Claude | [monitoring_token_limiter], [claude] |
Optional ANTHROPIC_API_KEY for Phase 2 live loop |
Local budget simulation plus optional Claude tool loop. |
kpi_gate_demo.py |
monitoring/kpi_gate |
Local execute | [monitoring_kpi_gate] |
None | Offline KPI gate demo: weekly snapshot vs policy charter and benchmark doctrine, honest insufficient_data, and fail-closed contract errors. |
gemini_uk_companies_house_handler.py |
finance/uk_companies_house_handler |
Gemini | [finance_uk_companies_house_handler], [gemini] |
GOOGLE_API_KEY, COMPANIES_HOUSE_API_KEY; optional GEMINI_MODEL |
Interactive v1.3.0 loop: composites, role/name filtering, filing helpers, turn-by-turn pipelines, disambiguation, record truncation limits. |
claude_uk_companies_house_handler.py |
finance/uk_companies_house_handler |
Claude | [finance_uk_companies_house_handler], [claude] |
ANTHROPIC_API_KEY, COMPANIES_HOUSE_API_KEY; optional ANTHROPIC_MODEL (default claude-haiku-4-5-20251001) |
Interactive v1.3.0 loop with multi-turn tool chaining, role/name filters, and disambiguation hints. |
uk_companies_house_handler_demo.py |
finance/uk_companies_house_handler |
Local execute | [finance_uk_companies_house_handler] |
None | Mocked v1.3.0 flows: composites, role/name filtering, filing helpers, turn-by-turn run_pipeline, disambiguation resume, record truncation limits. |
bg_remover_demo.py |
creative/bg_remover |
Local execute | [creative_bg_remover] |
None | Demonstrates offline background removal from a local image and optionally writes a transparent PNG. |
deck_builder_demo.py |
creative/deck_builder |
Local execute | [creative_deck_builder] |
None | Demonstrates offline presentation assembly from JSON deck specs with charts, tables, bullets, and speaker notes. |
deck_builder_chain_demo.py |
creative/bg_remover, creative/deck_builder |
Local execute | [creative_bg_remover], [creative_deck_builder] |
None | Demonstrates SkillContext chaining for outline suggestion, transparent logo generation, deck linting, and final rendering. |
semantic_web_proxy_demo.py |
data_engineering/semantic_web_proxy |
Local execute | [data_engineering_semantic_web_proxy] |
None | Demonstrates offline boilerplate stripping, opt-in comments, the JavaScript-render warning, and the SSRF guard using bundled fixture HTML. |
gemini_gmail_minimal.py |
office/gmail_handler |
Gemini | [office_gmail_handler], [gemini] |
GOOGLE_API_KEY, GMAIL_ADDRESS, GMAIL_APP_PASSWORD |
Minimal interactive loop — Gemini tool calling wired to Gmail (README quick start). |
pay_and_notify_demo.py |
office/gmail_handler, defi/evm_tx_handler |
Local execute | [office_gmail_handler], [defi_evm_tx_handler] |
Live: .env mail + wallet + BASE_RPC_URL, skillware addressbook init, skillware evm init. Smoke: PAY_NOTIFY_DEMO=1 |
Reproducible SkillContext chain: resolve → transfer → email receipt. Edit RECIPE constants at top of script. |
gmail_handler_demo.py |
office/gmail_handler |
Local execute | [office_gmail_handler] |
None | Mocked resolve, preview/send gate, search, and read flow (no Gmail credentials). |
gmail_signature_test_send.py |
office/gmail_handler |
Local execute | [office_gmail_handler] |
GMAIL_ADDRESS, GMAIL_APP_PASSWORD; run skillware mail signature init first |
Preview or send one test message to verify plain + HTML signature. |
gemini_gmail_handler.py |
office/gmail_handler |
Gemini | [office_gmail_handler], [gemini] |
GOOGLE_API_KEY, GMAIL_ADDRESS, GMAIL_APP_PASSWORD (dedicated agent mailbox; demo: GMAIL_HANDLER_EXAMPLE_DEMO=1) |
Interactive Gemini loop for resolve, search, read, preview/send mail. |
- Skill extras are listed per script above. Empty extras (
[]inpyproject.toml) still install core + skillware; use them so docs stay stable when a skill gains new runtime deps. - Agent-side model keys such as
GOOGLE_API_KEY,ANTHROPIC_API_KEY,OPENAI_API_KEY, andDEEPSEEK_API_KEYare documented in the provider guides. - Skill runtime keys such as
ETHERSCAN_API_KEYare documented in each skill manifest and on the skill catalog pages. - Ollama examples require the Python
ollamapackage, a local Ollama server, and the model named in the script, but no cloud API key.