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://mp-staging.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
references/file-cu-canary.md
Bounded File CU MI validation
Read only for File MI uncertainty or explicitly requested live validation. Not automatic setup, benchmark or release evidence; live validation needs separate approval.
Evidence and limits
Inspected AzureSearch service commit
2e241af8939a0891836b78278df113dab31a5964:
ContentUnderstandingClientBuilder.cs 33–68 selects MI without a key;
AIServicesHelpers.cs 68–126/181 binds Search system MI and Cognitive Services token audience.
The MI test was not run; simulated identity fixtures are not deployment proof.
Mapping paths under /Source/Search/Product/SearchAgentCore/:
DocumentExtraction/FileUploadProcessor.cs38–43,225–246,308–328,547–571: Standard CU chunks mapContenttosnippet, file ID tosnippet_parent_id, filename tometadata_storage_path. Owner metadata is separate;uidis a chunk key, not the original file ID.Models/KnowledgeSources/Dependencies/FileKnowledgeSourceDependencyHandler.cs81–89,364–368 creates the index through the manager and retainscreatedResources.index.RestClient/SearchRestIndexingPipelineManager.cs45–54,564–569,664–705,777–805,895–905: File has no language-routed alternate field.snippetisEdm.String, searchable/retrievable true, filterable/sortable/facetable false.
This is a pinned implementation contract, not public documentation or deployed proof.
CU may create an analyzer. One image-only PDF; omit embeddingModel and keep
disableImageVerbalization: true. No KB/chat is needed.
Local preparation and proposed plan
Use an existing private, owner-controlled directory. Bootstrap primitives validate it without directory creation or ACL rewrites. Private output is optional; canary checkpoints are not cleanup producer receipts.
Resolve <skill-root> to the loaded skill directory; use native local paths.
python "<skill-root>/helpers/file_cu_canary.py" --prepare "<existing-private-directory>"Local preparation exclusively creates cu-mi-probe.pdf and
cu-mi-probe-manifest.json; it never overwrites files or calls Azure.
The one-page PDF contains only a generated raster image. Its random
CUOCR plus eight-digit marker is not a PDF text layer. Plan/apply inspect the
actual multipart producer's names, owner, metadata and headers for contamination.
Retain the manifest's marker and SHA-256.
Resolve Search/CU/role IDs from read-only discovery. Do not select financial scope, create roles/accounts, disable local auth, revoke access or probe models to prepare. Missing prerequisites go to the existing native bootstrap owner with concrete separate approval. Both CU local-auth-enabled and disabled accounts are eligible; this typed path requires existing public CU reachability without default-deny ACLs.
Create a UTF-8 canary request using the ordinary File request contract:
{
"schema_version": "1.0",
"marker": "<manifest marker>",
"content_field": "snippet",
"receipt_directory": "<existing-private-directory>",
"bounds": {"timeout_seconds":120,"max_requests":60,"max_poll_attempts":3,"poll_interval_seconds":2},
"file_request": {
"schema_version":"1.0",
"api_version":"2026-08-01-preview",
"endpoint":"https://<selected-search>.search.windows.net",
"name":"<approved-unique-canary-name>",
"owner":"<resolved-owner>",
"local_root":"<prepared-private-directory>",
"paths":["cu-mi-probe.pdf"],
"service_tier":"<observed-tier>",
"extraction_mode":"standard",
"vectorization":"none",
"rbac":{"assignments":[{"id":"<observed-caller-assignment>"}]},
"network":{"posture":"<observed-posture>","evidence":"<readback-reference>"},
"content_understanding":{
"endpoint":"https://<selected-cu>.services.ai.azure.com",
"resource_id":"<exact-CU-ARM-ID>",
"auth":"system-assigned",
"managed_identity":{
"search_resource_id":"<exact-Search-ARM-ID>",
"role_assignment_id":"<CU-ARM-ID>/providers/Microsoft.Authorization/roleAssignments/<GUID>"
},
"prerequisites":{
"resource":"<capability-region-readback>",
"configuration":"<selected-CU-processing-evidence>",
"identity":"<scoped-role-readback>",
"network":"<CU-reachability-evidence>"
}
}
}
}Replace placeholders; examples never authorize resources or costs.
Canary v1.1 pins this OCR mapping; old/changed plans need fresh approval.
content_field must be snippet; there is no override or caller-attested mapping.
Missing or mismatched generated schema returns partial, never a fallback field.
python "<skill-root>/helpers/file_cu_canary.py" --plan "<canary-request.json>"Planning uses GETs/local reads only, with Entra authentication for ARM/Search;
no CU key acquisition.
It requires exact-name absence, one immutable synthetic PDF, verified Search
system identity/CU-scoped Cognitive Services User, and fresh account/API/network
bindings. It retains an unapproved private execution_input_ref and displays the
source/auth/data/cost scope, bounds and 15-minute expiry.
Separate live approval and execution
Approve the unchanged outer plan fingerprint only after reviewing synthetic
content movement, possible cross-region processing, CU/analyzer charges, retained
Search data and cleanup ownership. Set its approval.confirmed to true; do not
edit nested plans, expiry, bounds or fingerprints.
python "<skill-root>/helpers/file_cu_canary.py" --input "<approved-private-canary-envelope.json>"The executor composes the File planner's approved v1.2 workflow: one conditional
source PUT (If-None-Match: *), one multipart file upload, and bounded GETs.
No listKeys, API-key/ENV channel, KB, chat, embeddings, role grants or direct CU calls.
It rechecks identity/role/account and synthetic hash before mutation, then verifies
upload markers, Standard configuration, source ETag and generated schema.
Each of at most three rows per poll must bind the uploaded file's exact ID/path
through snippet_parent_id/metadata_storage_path; only snippet proves OCR.
Timeout/request/poll limits stop client work; they are not monetary caps or remote cancellation. Backend work and costs may continue after a timeout. This stricter one-upload approval forbids even queue-429 retry, auth changes or cleanup.
Result, recovery and cleanup
Private checkpoints record start, source/upload HTTP ACK, File result and final result. Status-only ACK is not ingestion/OCR proof; interruptions are non-atomic. Retain checkpoints and inspect exact resources; do not replay. Upload ACK persistence faults are terminal partial results, never ambiguous-upload recovery. Preserve the first diagnostic and earlier writes even if later receipts fail.
keyless-functional-pass requires the indexed OCR marker, not only create/upload.
Search principal/role readbacks are recorded separately; backend CU principal
attribution and deployment provenance remain unverified without independent
telemetry. Do not promote this to a full release or universal MI support claim.
Absent OCR, changed bindings, denied access, schema gaps or exhausted bounds return
blocked/partial with existing writes and uncertainty, not a success-shaped stub.
Retain source name/ETag/definition digest, file identity/hash, generated index and approval records. Cleanup is separately approved through the cleanup owner, requiring original verified producer receipts, fresh ETags and exact owned scope. Canary checkpoints cannot substitute; without those receipts, retain inventory and stop for scoped recovery review. Do not guess deletion scope, claim ownership from ambiguous CREATE, delete shared Search/CU/roles, or invent producer receipts.
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.
Download ZIP
The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download foundry-iq.zip