AutoGineer summary
Written by AutoGineer from the skill’s own files, not by the author
Foundry IQ provides a structured framework for creating, diagnosing, and connecting knowledge bases to AI agents. It supports making local or Blob-based documents searchable, managing multi-source knowledge configurations, and retrieving information with citations. The skill emphasizes strict adherence to defined procedures for service discovery, resource creation, and troubleshooting to ensure reliable agent-knowledge integration.
What it does
- Creates searchable knowledge bases from local or Azure Blob storage documents.
- Connects existing knowledge bases to AI agents.
- Diagnoses issues with knowledge base configurations or unsupported connectors.
- Retrieves information from knowledge bases with source citations.
- Manages the lifecycle of search services and knowledge sources.
- Routes requests based on specific operational needs rather than source counts.
When to use it
- When you need to make local or cloud-stored documents searchable by an AI agent.
- When connecting an existing knowledge base to a new or current agent.
- When troubleshooting or diagnosing a knowledge base configuration.
- When you need to create a new search service or knowledge source.
- When performing retrieval tasks that require citations from a knowledge base.
Advantages
- Provides a clear, procedural approach to knowledge base management.
- Ensures consistent handling of multi-source knowledge configurations.
- Includes built-in diagnostic paths for troubleshooting.
- Supports secure, citation-backed retrieval for agent responses.
- Prevents unauthorized or unsupported configuration changes.
Usage examples
- “Create a new knowledge base from my Azure Blob container.”
- The agent will initiate the knowledge base creation procedure, validating the source and setting up the necessary search indexing.
- “Connect my existing knowledge base to the current agent.”
- The agent will follow the connection workflow to link the specified knowledge base to the agent's retrieval pipeline.
- “Why is my multi-source knowledge base failing to index?”
- The agent will trigger the diagnostic procedure to identify configuration drifts or unsupported connector issues.
- “Retrieve information about project timelines from the knowledge base.”
- The agent will query the knowledge base and provide an answer with citations from the source documents.
Install
Download the skill as a ZIP:
https://autogineer.com/agent-skills/microsoft/foundry-iq/downloadUnzip it into the cross-client skills folder of your project:
mkdir -p .agents/skills && unzip foundry-iq.zip -d .agents/skills
Documentation by Microsoft
Foundry IQ
Read one procedure before questions/actions; invocation is not a read.
Read the owning procedure before blocked/unsupported responses too.
Before mutation plans/approval, successfully read its required pre-action references, selected
branches only. Do not reload successful reads. On failure, try only permitted
bounded exact-path reads with any supported reader; never bypass restrictions
or search broadly. If still unavailable: blocked: reference-unavailable, name
missing references and inability to plan. Never invent requirements/plans.
Failures first.
Cleanup and receipt-backed execution go directly to their lifecycle/producer owner; do not reopen Search intake, provisioning or hardening.
Before expensive service discovery, reuse supplied resource/intent; otherwise ask one early USE EXISTING / FIND CANDIDATES / CREATE NEW choice. Only FIND enumerates; supplied identity uses exact/minimum scoped resolution. CREATE checks its proposed name, not existing-service inventories. Preserve these answers across source/KB/CU/model handoffs; selection is not write approval.
Searchable docs: KB + validated retrieval. Confirm intent once; KS-only must be explicit. Child success is not KB completion. Unclear/compound/mode/completion: read.
Route by requested operation, not existing KB source count. Connecting an existing KB with two or more sources, without changing the KB, uses Connect. Read-only operations use their owning procedure and actual helper constraints; this does not add retrieval modes or supported source kinds. Explicit unsupported provisioning or multi-source KB creation/reconfiguration uses Diagnose and stops before discovery, even when connecting an agent is also requested. This routing takes precedence over classic-search terms (e.g. hybrid search) in compound requests. Never end in a plain refusal: Diagnose gives the boundary, docs pointer and agent handoff; writes still need an approved concrete plan. Do not silently execute only the supported part of a compound request. If existing-KB connection versus KB creation/reconfiguration is unclear, read intent-routing and clarify that scope before Azure discovery. Never infer KB mutation.
| Outcome | Read |
|---|---|
| Cleanup | Plan cleanup |
| Failure/drift | Diagnose |
| Unsupported connector provisioning / multi-source KB creation or reconfiguration | Diagnose |
| Connect | Connect |
| Read KB | Query |
| Search only | Search |
| File KS only | File |
| Blob/ADLS KS only | Blob |
| Searchable/KB | KB |
Generic agents: microsoft-foundry.
Reads: no approval; approve unchanged plans before writes.
Hide hashes. No Search/Storage keys, scope widening, guessed identity/boundaries,
drift repair or joint cleanup/creation approval. Acceptance != success.
Files
- ATTRIBUTION.mdAdded by AutoGineer977 B
- LICENSELicence file added by AutoGineer1.1 KiB
- SKILL.md3.7 KiB
- agents/connect-hosted-toolbox.md7.8 KiB
- agents/connect-hosted.md7.8 KiB
- agents/connect-prompt-sdk-fallback.md7.8 KiB
- agents/connect.md7.8 KiB
- agents/create-missing-agent.md7.8 KiB
- helpers/_blob_observation.pyScript4.4 KiB
- helpers/_blob_source_read.pyScript39.5 KiB
- helpers/_bootstrap_io.pyScript30.1 KiB
- helpers/_cleanup_dependencies.pyScript27.5 KiB
- helpers/_cleanup_receipts.pyScript13.5 KiB
- helpers/_common.pyScript36.2 KiB
- helpers/_document_adapters.pyScript15.0 KiB
- helpers/_document_limits.pyScript3.9 KiB
- helpers/_embedding.pyScript7.0 KiB
- helpers/_file_inventory.pyScript24.4 KiB
- helpers/_file_source_config.pyScript15.6 KiB
- helpers/_indexer_observation.pyScript7.1 KiB
- helpers/_initial_prompt.pyScript12.5 KiB
- helpers/_private_json.pyScript2.4 KiB
- helpers/_progress.pyScript12.1 KiB
- helpers/_prompt_read.pyScript17.7 KiB
- helpers/_search_read.pyScript6.0 KiB
- helpers/_source_readback.pyScript1.6 KiB
- helpers/blob-contracts.md7.8 KiB
- helpers/blob-cu-contracts.md7.8 KiB
- helpers/blob_inventory.pyScript17.1 KiB
- helpers/blob_recheck.pyScript64.6 KiB
- helpers/blob_source.pyScript35.8 KiB
- helpers/bootstrap-contracts.md7.8 KiB
- helpers/bootstrap_azure.pyScript41.5 KiB
- helpers/cleanup_plan.pyScript41.4 KiB
- helpers/contracts.md7.8 KiB
- helpers/cu_ingestion_auth.pyScript12.5 KiB
- helpers/document-assessment.md7.8 KiB
- helpers/document_assess.pyScript14.0 KiB
- helpers/file-upload-recovery.md7.8 KiB
- helpers/file_cu_canary.pyScript32.7 KiB
- helpers/file_cu_mi.pyScript9.6 KiB
- helpers/file_ingest.pyScript15.4 KiB
- helpers/file_source.pyScript31.7 KiB
- helpers/file_upload.pyScript53.7 KiB
- helpers/hosted_connect.pyScript30.8 KiB
- helpers/kb-contracts.md7.8 KiB
- helpers/knowledge_base_retrieve.pyScript7.7 KiB
- helpers/model-discovery-contracts.md7.8 KiB
- helpers/model-discovery-scopes.md7.8 KiB
- helpers/model_discovery.pyScript23.7 KiB
- helpers/private-artifacts.md7.2 KiB
- helpers/private_artifacts.pyScript4.8 KiB
- helpers/prompt_cleanup.pyScript22.0 KiB
- helpers/prompt_connect.pyScript62.3 KiB
- helpers/requirements-assessment.txt103 B
- helpers/retrieval-verification-contracts.md7.8 KiB
- helpers/retrieval_verify.pyScript19.6 KiB
- helpers/search-intake-contracts.md7.6 KiB
- helpers/search_intake.pyScript18.4 KiB
- helpers/search_reconcile.pyScript59.7 KiB
- helpers/source_vector.pyScript33.2 KiB
- helpers/throttle-recovery.md5.0 KiB
- helpers/vector-contracts.md7.8 KiB
- knowledge-bases/create.md8.1 KiB
- knowledge-bases/retrieve.md7.8 KiB
- knowledge-sources/create-azure-blob.md7.8 KiB
- knowledge-sources/create-file.md7.8 KiB
- lifecycle/cleanup.md7.8 KiB
- references/abstention.md1.0 KiB
- references/blob-binding-evidence.md7.8 KiB
- references/blob-indexer-observation.md7.7 KiB
- references/blob-ingestion-progress.md6.5 KiB
- references/blob-readiness-recheck.md7.8 KiB
- references/blob-vector-readiness.md2.6 KiB
- references/bootstrap-azure.md7.8 KiB
- references/content-fit.md7.8 KiB
- references/cu-ingestion.md7.8 KiB
- references/file-cu-canary.md7.8 KiB
- references/intent-routing.md7.7 KiB
- references/owner.md2.1 KiB
- references/platform-contracts.md7.7 KiB
- references/platform-interfaces.md7.8 KiB
- references/resource-intake.md7.8 KiB
- references/search-substrate.md7.8 KiB
- references/standard-cu.md7.8 KiB
- search-services/create.md7.8 KiB
- troubleshooting/diagnose.md8.7 KiB
helpers/bootstrap-contracts.md
Search bootstrap
New Basic/standard Search in an existing group. Other prerequisites/cleanup: native bootstrap.
Progress: stderr; --no-progress disables.
Choices
Python 3.12+, signed-in CLI on Windows/POSIX; no login/install/context switch. No preflight policy reads. Prerequisites: owner-verified references, not helper-verified. 1–256 printable characters; punctuation allowed. Errors omit values.
Creation: search/create. Existing operations: intake;
legacy reuse stays strict, never hardens.
New locations fold ASCII case/whitespace (East US → eastus);
Not availability proof; bodies/hashes stay unchanged.
Basic: 1–3 replicas/one partition; standard: 1–12 replicas/1/2/3/4/6/12 partitions.
Fixed SystemAssigned, keyless auth and public networking; no role changes.
Non-secret tags; creation adds operation/owner tags.
{"schema_version":"2.0","resource_kind":"search","action":"create",
"subscription_id":"00000000-0000-0000-0000-000000000001","tenant_id":"00000000-0000-0000-0000-000000000002",
"resource_group":"rg1","name":"mysearchservice","location":"westus","sku":"basic","replicas":1,"partitions":1,
"public_network_access":"Enabled","tags":{"project":"knowledge"},"owner":"operator",
"prerequisites":{"quota":"checked; enough","pricing":"approved","network":"approved public","requirements":"settings","exclusive_name_authority":"exclusive name"},
"limits":{"command_seconds":5,"wait_seconds":10,"wait_interval_seconds":1},"receipt_dir":"<absolute-private-directory>"}Replace examples/limits. Reuse: exclusive_name_authority: null;
required tags match; no ownership transfer.
Region scope (closed):
{"schema_version":"2.0","subscription_id":"<guid>","tenant_id":"<guid>","receipt_dir":"<private-dir>","limits":{"command_seconds":5}}No RG/name/SKU: account check plus one az rest GET:
/subscriptions/<sub>/providers/Microsoft.Search?api-version=2021-04-01.
searchServices.locations supplies canonical available_locations (1–256).
Exit 0: discovered, no approval/artifact.
Create plan/apply: one fresh region GET each, including retained artifacts; no cache.
Unknown: bootstrap-region-unsupported plus choices;
denied/malformed: blocked. Reuse skips catalogs. Not SKU/quota/capacity/model/residency proof.
python "<skill-root>/helpers/bootstrap_azure.py" --regions scope.json
python "<skill-root>/helpers/bootstrap_azure.py" --plan choices.json
python "<skill-root>/helpers/bootstrap_azure.py" --apply "<private-directory>/<artifact_id>.plan.json" --approve--plan uses Azure reads/local private writes: <artifact_id>.plan.json
body, before-state, choices, time, unapproved envelope.
Stdout: artifact_id/approval_summary, no paths/errors/hashes.
Labels: caller attestation, not helper verification; exact references stay private.
Show resource/network/capacity/tags/cost/limits; --approve consents once.
No cached consent or user checksums.
15-minute expiry; submission markers prevent retries.
On drift/failure/expiry/changed choices, rerun --plan; discard consent.
Reconcile uncertainty; no suffix-create/body/hash edits.
Schema 1.0: regenerate (bootstrap-contract-version). Removed inputs
max_polls/poll_seconds/poll_interval_seconds are rejected.
Execution
Argv: az account show --subscription, az group show --name --subscription,
Search ARM GET/PUT API 2025-05-01. PUT uses --body then one
"@" + str(body_path) argument, Content-Type/client-request-ID headers.
POSIX runs az directly; Windows MSI/ZIP uses bundled python.exe -IBm azure.cli.
Other Windows layouts block.
Only normally returned target ResourceNotFound proves absence.
Fresh principal/tenant/subscription/group/exact-name absence precede one PUT.
GET/PUT is not atomic: require exclusive name authority.
Mandatory atomicity: bootstrap-concurrency-unresolved, no invented conditionals.
Reuse: two fresh material readbacks, required configuration/tags,
keyless identity/principal/tenant, endpoint, provisioning succeeded/status running.
reused: no mutation approval/executor or ownership adoption.
Wait uses the same identity; existence is not readiness.
After PUT: az resource wait --ids <id> --api-version 2025-05-01 --custom <generated-condition> --interval <wait_interval_seconds> --timeout <wait_seconds>.
Fixed properties: succeeded/running or terminal states, lower/title/uppercase.
No caller expressions/custom polling.
Final raw GET establishes material match/ownership before readiness.
Wait failure remains primary even with ready GET; provider evidence is secondary.
Limits: command 1–60 seconds, wait 1–900, interval 1–30.
Wait/final GET: separate wait_seconds/command_seconds;
sum is not an end-to-end deadline.
subprocess.run: argv, shell=False, best-effort timeout/cleanup.
CLI/OS/filesystems prevent hard time/process-tree/request-count guarantees.
No PID or confirmed-cleanup claim. Captured output is rejected after capture
above 1 MiB per stream: not a streaming cap or memory bound. Input/body/receipt
limits remain 1 MiB. Timeout/execution/receipt failure after attempted PUT is partial.
Checks: target, principal/tenant, capacity/SKU, auth/network, identity, required tags, ARM readiness. Metadata/ordering/unrelated tags, ID/enum casing, equivalent optional defaults do not need another approval. Never default missing material fields or return extra tags. Material conflict, unknown ownership or failed readiness blocks/returns partial.
Evidence and failure
Existing absolute private directory outside the plugin.
No symlinks/reparse paths. POSIX: directory-FD creation, identity/owner/private-mode
rechecks; exclusive safe leaves, mode 0600.
POSIX semantics required; later pathname uses are not pinned.
Windows checks owner/DACL (owner, SYSTEM, Administrators), not handle-relative
creation; chmod does not establish Windows privacy. No ACL changes.
Same-user/admin tampering is possible; unprovable privacy blocks.
Mocked/DrvFS is not native-filesystem or Azure evidence.
Flushed receipts: operation/target/body/argv, client-request ID, readbacks/digests,
first error code/status/request ID, ownership. No raw errors/output/policy values/tokens/documents.
Message digest/message_withheld; secret-free labels/tags.
CLI file logging/dynamic installation: process-disabled.
Creation-only policy diagnostics:
RequestDisallowedByPolicy, supported policy IDs or policy-violation details.
Provider error/statusDetails, never tags/configuration.
A bare 403/RBAC/network/quota failure triggers no policy calls.
Preserve first failure; diagnostic/receipt errors are secondary warnings.
At most eight referenced assignments/selected-subscription definitions
within 60 seconds: az policy assignment show --name --scope
and az policy definition show --name --subscription. No lists or global scans.
Built-ins/management groups/initiatives/exemptions/missing references need
the policy owner. No compliance/applicability proof, policy changes, write retries
or correction approval.
Exit 0: planned/fresh reused/applied completed (ARM only).
Data-plane access/ingestion/retrieval stay unverified.
Exit 2: blocked, no confirmed/ambiguous Azure writes.
Exit 3: partial, first_failure, attempted_writes, resources_remaining;
unproven ownership is unverified, never run-owned.
Receipt failure: block before submission, partial handoff afterward.
No automatic rollback/deletion. Cleanup always needs separate consent and fresh
ownership/configuration/children/scoped-role evidence.
Authorities: failure/conflict/uncertainty only.
Requirements and compatibility
Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta
“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.
Needs: Needs Python
The author says: Azure
Security
What our scanner noticed· Medium risk
- References to credential files
- Instructions that use the network
- Scripts that your agent may run
This skill includes scripts that your agent may run. Read them before you use it.
A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.
Attribution and licence
- Created by
- Microsoft
- Publisher
- Microsoft (Official)
- Source
- microsoft/skills · .github/plugins/foundry-iq-skills/skills/foundry-iq · commit 0696600
- Licence
- MIT License (redistribution allowed)
- LICENSE (added by AutoGineer from .github/plugins/foundry-iq-skills/LICENSE)
- ATTRIBUTION.md (written by AutoGineer)
- Synced
AutoGineer is not affiliated with or endorsed by Microsoft or Microsoft.
Download ZIP
The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download foundry-iq.zip