Un Claude Skill que toma un cuestionario de seguridad entrante — SIG, SIG-Lite, CAIQ, HECVAT, o un formato de spreadsheet custom — y la control library mapeada de tu firma, y luego redacta tantas respuestas como puede mientras marca preguntas nuevas, forward-looking o de baja confianza para revisión del security team. El skill produce el .xlsx original con las celdas de respuesta pobladas más un resumen en markdown que lista cada flag, cada cita y cada confidence score. Carga la control library una vez; córrelo en cada cuestionario entrante de ahí en adelante. Recorta las típicas 4-8 horas de tiempo de analista por respuesta de vendor due diligence a una pasada de revisión de 30-45 minutos.
Cuándo usarlo
Usa este skill cuando un cliente o prospect envía un cuestionario de seguridad entrante y quieres tener el 70-80% mecánico de respuestas pre-pobladas, citadas a tu control library y a la evidencia de soporte, antes de que un security analyst tome el control. La economía funciona cuando el volumen de cuestionarios es lo bastante alto como para que el ahorro de tiempo por respuesta se acumule — típicamente un equipo de GRC manejando 8+ cuestionarios entrantes por mes, donde el tiempo del analyst es la restricción dominante y la control library ya está documentada.
El skill asume que ya tienes una control library mapeada — cada control indexado por sección de SOC 2, cláusula de ISO Annex A, ID de control de CCM, y función de NIST CSF, con la respuesta canónica revisada por security y legal. Si todavía no tienes esa library, constrúyela primero. El skill amplifica una postura de controles documentada; no la inventa. Por debajo de aproximadamente 8 cuestionarios al mes, el overhead de mantener la library excede el ahorro y el analyst debería seguir redactando a mano.
Cuándo NO usarlo
Envío final al cliente. El skill redacta; un security analyst nombrado revisa cada respuesta y el deal owner firma antes de que el cuestionario vuelva. Auto-fill más auto-send es el modo de falla contra el que esta regla protege — cada respuesta del cuestionario es una representación contractual.
Cualquier cosa ruteada a través de un vendor de AI que no sea Tier A. El contenido del cuestionario frecuentemente cita la propia arquitectura y metadata de procurement del cliente. Si el modelo configurado no está en la lista de vendors aprobados de la firma con un DPA firmado cubriendo trabajo de programa de seguridad, escala a security en lugar de correr. El skill aplica esto como precondición leyendo la lista de vendors permitidos al inicio de references/3-novel-question-escalation.md.
Frameworks de control nuevos que la firma no ha mapeado. FedRAMP Moderate, IRAP, BSI C5 — si el framework no está en la library, el skill va a pattern-match de manera incorrecta y producir respuestas confiadamente equivocadas. Mapea el framework dentro de la library primero, luego corre.
Cuestionarios atados a un incidente activo o a un audit finding abierto. Esos no son ejercicios de redacción. Security y legal los manejan directamente.
Cualquier cliente que haya pedido explícitamente respuestas sin asistencia de AI. Honra el pedido. Algunos equipos de procurement exigen autoría 100% humana en el cuestionario y lo verifican.
Cuestionarios de texto libre fuertemente customizados que te citan el MSA del propio cliente. “Confirma que tu deployment coincide con el Schedule 3” es una pregunta para el deal team, no una pregunta de controles. El skill marca estas por default en lugar de adivinar sobre lenguaje contractual específico del cliente.
Setup
Pon el bundle. Coloca los contenidos de apps/web/public/artifacts/vendor-dd-questionnaire-skill/ en tu directorio de skills de Claude Code (~/.claude/skills/vendor-dd-questionnaire/) o sube la carpeta a un proyecto de Claude.ai. El skill expone un solo entry point: pásale el cuestionario entrante y devuelve el .xlsx poblado más un resumen en markdown.
Reemplaza los templates. El bundle viene con tres archivos de template en references/. Reemplaza cada uno con el contenido real de tu firma antes del primer run:
references/1-control-library-template.md — tu control library mapeada, indexada por framework, con respuestas canónicas e IDs de evidencia de soporte. Este es el archivo contra el que el skill matchea cada pregunta; sin tus controles reales, cada respuesta es genérica.
references/2-answer-format-reference.md — los formatos de respuesta literales por tipo de pregunta (Yes/No, Yes/No-con-descripción, descriptiva, document-upload, certification-reference, N/A). Reemplaza el wording de ejemplo con tu estilo de la casa.
references/3-novel-question-escalation.md — las reglas que deciden cuándo una pregunta se rutea a un security analyst en lugar de recibir una respuesta redactada. Críticamente, aquí también listas los vendors de AI autorizados para trabajo de programa de seguridad — el skill se niega a correr de otra manera.
Construye el índice de evidencia. Mantén una lista de documentos de evidencia de soporte (reporte SOC 2, certificado ISO, resumen de pen test, BCP, plan de IR, lista de sub-procesadores) con un ID por documento y una fecha effective_through. El skill cita IDs en las respuestas; el analyst maneja la entrega real del documento a través del trust center con NDA de la firma, nunca adjuntando docs al archivo del cuestionario.
Prueba sobre un cuestionario conocido. Corre el skill sobre un SIG-Lite o CAIQ que ya hayas completado a mano. Compara las respuestas auto-completadas contra tus respuestas manuales. Ajusta la control library donde el skill se pierda matches obvios; ajusta el answer-format reference donde el wording se sienta forzado. Dos o tres iteraciones llegan a un baseline estable.
Conéctalo al intake. Cuando llegue un cuestionario nuevo, el analyst asignado tira el .xlsx en el skill y recibe el archivo poblado más el resumen en markdown en aproximadamente 60 segundos. El analyst abre el resumen primero, revisa las preguntas marcadas, y luego recorre el .xlsx poblado (cada celda lleva un comment con el ID de control, ID de evidencia y confidence) antes de devolverlo al cliente.
Qué hace el skill realmente
El skill corre cuatro sub-tareas en orden; no se paralelizan porque cada paso depende del contexto del anterior. El método completo, con el razonamiento de ingeniería, vive en apps/web/public/artifacts/vendor-dd-questionnaire-skill/SKILL.md. En resumen:
Clasificación de pregunta. Por cada fila, identifica el tipo de respuesta esperada (Yes/No, Yes/No-con-descripción, descriptiva, document-upload, certification-reference, N/A), el tópico (control de acceso, encriptación, IR, BCP, sub-procesadores, etc.) y la pista de framework si la pregunta cita una (CC6.1, A.9.4.2, CCM IAM-09). Por qué clasificación primero: el tipo de pregunta controla el formato de respuesta, y el tópico más la pista de framework manejan juntos el lookup contra la control library. Saltarse esto y dejar que el modelo redacte libremente es la razón más común por la que el auto-fill produce respuestas inconsistentes o mal categorizadas.
Matching contra la control library. Busca el control que matchee con prioridad: match exacto de sección de framework → tópico más sub-tópico dentro del mismo framework → match cross-framework de tópico → sin match (marca para escalación, no improvises). Por qué control-library-first en lugar de improvisar desde documentación: las entradas de library ya fueron revisadas por security y legal. Las respuestas improvisadas reintroducen ese burden de revisión en cada run, anulan el ahorro de tiempo y crean riesgo de representación contractual.
Redacción de respuesta con citas. Emite la respuesta canónica en el formato que la pregunta espera, llevando el ID de control, el ID de evidencia de soporte, la fecha last_reviewed de la entrada de library, y un confidence score (high / medium / low). Pattern-matchea contra prior_responses como desempate solo en matches fronterizos — nunca dejes que una respuesta previa anule la library actual, porque las políticas cambian y respuestas de 18 meses atrás pueden estar rotundamente equivocadas.
Decisión de review-flag. Reemplaza la respuesta redactada con un bloque de “necesita revisión de security” para cualquier pregunta que matchee las reglas en references/3-novel-question-escalation.md: framework no mapeado, compromiso forward-looking, pregunta específica de incidente, referencia específica a arquitectura o contrato del cliente, match de baja confianza, o divergencia respecto a una respuesta previa reciente.
Realidad de costos
Costo de tokens por cuestionario y ahorro de tiempo del analyst por respuesta, con números concretos:
SIG-Lite típico (~150 preguntas, ~20k tokens de texto de pregunta). Input ~30k tokens (cuestionario + control library + answer-format reference + criterios de escalación), output ~15k tokens (respuestas redactadas con citas + resumen). Al pricing de Claude Sonnet 4.5 ($3 / MTok input, $15 / MTok output), eso son aproximadamente $0.32 por cuestionario.
SIG completo típico (~800 preguntas, ~80k tokens). Input ~95k tokens, output ~60k tokens. Aproximadamente $1.20 por cuestionario.
CAIQ v4 típico (~260 preguntas, ~30k tokens). Input ~42k tokens, output ~22k tokens. Aproximadamente $0.45 por cuestionario.
Run rate mensual con 20 cuestionarios (10 SIG-Lite + 8 CAIQ + 2 SIG completos). Aproximadamente $9 en costo de tokens. El ahorro de tiempo del analyst lo opaca: un baseline de 4-8 horas por cuestionario bajando a 30-45 minutos de revisión es una recuperación de 70-90 horas de analyst al mes a ese volumen. Una hora de analyst a $120/hr fully loaded cubre el costo del skill de ~370 cuestionarios.
El costo real es el mantenimiento de la library. Security necesita mantener references/1-control-library-template.md actualizado y el índice de evidencia actualizado. Presupuesta dos horas de un security engineer senior por trimestre para refrescar la library, más una hora por trimestre para hacer triage de los patrones de escalación e incorporar las preguntas recurrentes fuera-de-library de vuelta a la library. La staleness de la library es el modo de falla que silenciosamente destruye la calidad de output — el skill alegremente emite respuestas viejas con alta confianza si la library miente acerca de estar actualizada.
Métrica de éxito
Dos métricas, observadas en conjunto, te dicen si el skill está pagando por sí mismo:
Reducción de cycle time en la respuesta del cuestionario. Baseline: tiempo mediano desde el intake del cuestionario hasta “listo para firma del deal owner”. Objetivo: reducir la mediana en 70-85%. Un equipo con baseline de 6 horas por cuestionario debería aterrizar entre 45-90 minutos (el skill produce en ~60 segundos; la revisión del analyst se lleva el resto).
Tasa de flags por cuestionario. Banda objetivo: 15-30% de preguntas marcadas para revisión del analyst. Por debajo de 10% significa que la library es demasiado permisiva — el skill está dando rubber-stamp a matches de baja confianza como respuestas de alta confianza. Arriba de 40% significa que la library no cubre suficiente terreno y el skill está produciendo mayormente flags. O ajusta la library o suelta el skill en ese tipo de cuestionario hasta que mejore la cobertura.
Un tercer indicador adelantado que vale la pena observar: tasa de follow-up del cliente por pregunta. Si tipos específicos de preguntas consistentemente provocan un follow-up de “por favor aclarar” del cliente, la respuesta canónica en la library es poco clara o está sub-citada. Trackea qué preguntas provocan follow-ups y reescribe esas entradas de library primero.
vs alternativas
La decisión es entre este skill, automatización de cuestionarios construida por vendor, y el status quo manual escrito por el security team:
vs Vanta Questionnaires o Drata Trust. Estos son productos SaaS de vendor empaquetados con plataformas más amplias de GRC. Ganan cuando ya usas Vanta o Drata para monitoreo de compliance (las respuestas y la evidencia ya están en la plataforma), cuando quieres un trust center customer-facing como parte del producto, y en velocidad de despliegue si tu control library ya está en la forma estructurada de la plataforma. Pierden cuando tu postura de controles tiene matices inusuales que el banco de preguntas de la plataforma no cubre, cuando quieres transparencia a nivel de token sobre cada respuesta (el skill cita los IDs de sección de tu library; los vendors citan su mapping interno), y en precio (los tiers de plataforma corren miles por mes vs el costo de tokens del skill de aproximadamente $9/mes más la amortización del tiempo del analyst).
vs HyperComply o Conveyor. Automatización de cuestionarios AI-nativa como servicio gestionado. Ganan en cero esfuerzo de despliegue y en la garantía a nivel de servicio sobre el turnaround. Pierden en auditabilidad por respuesta (las respuestas salen del modelo del vendor, no de tu library) y en el modelo de privilegio (tu control library vive en un sistema del vendor, no en tu repo donde security y legal la revisan). Elige una de estas si quieres los cuestionarios completamente fuera del plato del equipo in-house y aceptas el trade-off en auditabilidad.
vs respuestas manuales escritas por el security team. El status quo en la mayoría de las firmas. Mayor calidad en preguntas nuevas (los humanos pattern-match mejor sobre wording raro), costo mucho más alto por cuestionario, turnaround más lento. El skill no es un reemplazo del analyst — desplaza el tiempo del analyst de tipear-y-buscar a juicio-y-revisión.
El sweet spot del Claude Skill es la firma de volumen mediano con una control library bien documentada y un security team que quiere que la AI haga la primera pasada pero exige revisión del analyst sobre cada output y demanda que cada respuesta trace a un control documentado. Si no puedes señalar la entrada de library detrás de una respuesta, la respuesta no sale.
Cosas para cuidar
Una control library vieja produce respuestas confiadamente equivocadas. Un reporte SOC 2 Type II de 2024 citado como evidencia en 2026 va a ser rechazado por cualquier cliente sofisticado. Guardrail: el header de resumen de cada output escribe la fecha last_reviewed de la library y la fecha vigente de cada documento de evidencia citado. El analyst rechaza cualquier draft donde la library sea más antigua que 90 días, refresca y vuelve a correr. El umbral de 90 días está escrito explícitamente en references/3-novel-question-escalation.md como trigger de escalación soft, así el propio skill marca respuestas fronterizamente viejas.
Improvisación de respuesta cuando la library no matchea. Un modelo bajo presión para “llenar la celda” va a redactar libremente una respuesta de aspecto plausible. Guardrail: el matching pass emite sin match → flag explícito en lugar de degradar gracefully. El skill se niega a escribir una celda sin un ID de control; las celdas sin cita aparecen en el resumen como marcadas-para-revisión, nunca como respuestas redactadas. Si ves respuestas redactadas sin citas, el bundle fue editado — re-instálalo.
Vencimiento de certificación manejado silenciosamente. Un SOC 2 citado como vigente puede haber expirado entre el último refresh de la library y hoy. Guardrail: el índice de evidencia lleva effective_through por documento. Si hoy está después del effective_through, el skill suelta la cita de evidencia y degrada la respuesta a confianza low con una nota de “cert en renovación”. El analyst persigue la cert renovada antes de que el cuestionario vuelva.
Compromisos forward-looking tratados como hechos. “¿Vas a soportar customer-managed keys para Q4?” es una pregunta de roadmap, no una pregunta de controles. Redactada como Yes/No, se convierte en una representación contractual. Guardrail: references/3-novel-question-escalation.md lista los patrones lingüísticos (“vas a”, “planeas”, “para qué fecha”) que fuerzan un flag-para-revisión independientemente de la confianza. Las respuestas de roadmap siempre pasan por producto y legal, nunca solo por el skill.
Drift de pattern-match desde respuestas previas. La respuesta del año pasado decía “rotación de claves de 365 días”; la política de este año dice 90 días. Reutilizar la respuesta previa crea una representación contractual equivocada. Guardrail: el matching de respuesta previa es solo desempate, nunca override. Cuando una respuesta previa difiere de la entrada actual de library, el skill surfacea la divergencia en el resumen para que el analyst la vea antes de que vuelva.
Fuga de privilegio vía vendors que no son Tier A. El contenido del cuestionario es confidencial de la firma y confidencial del cliente simultáneamente. Guardrail: el skill se niega a correr a menos que el modelo configurado aparezca en la lista de vendors permitidos al inicio de references/3-novel-question-escalation.md. Precondición dura; ningún CLI flag la bypassea.
Stack
Claude — runtime del Skill (Claude Code o Claude.ai con Skills custom habilitados).
El stack de GRC existente de la firma (Vanta, Drata, OneTrust, Whistic, o similar) — sistema de registro para la control library y el índice de evidencia que el skill lee. El skill no reemplaza la plataforma de GRC; se sienta encima de los mismos datos de source-of-truth.
Microsoft Excel — para abrir el .xlsx poblado. Los comments por celda llevan el ID de control, ID de evidencia y confidence score para que el analyst pueda auditar sin volver al resumen en markdown.
El trust center con NDA o portal de evidencia de la firma — para entregar los documentos de evidencia que el skill cita por ID. Los documentos nunca se adjuntan al archivo del cuestionario directamente.
---
name: vendor-dd-questionnaire
description: Auto-fill an inbound security/compliance questionnaire (SIG, SIG-Lite, CAIQ, or a custom format) by mapping every question to the firm's pre-approved control library, citing the control ID and supporting evidence on each answer, and flagging novel or low-confidence questions for the security team. Use as a first-pass drafter before a security-team final review, never as the submission-of-record.
---
# Vendor DD questionnaire
## When to invoke
Invoke when a customer or prospect has sent an inbound vendor diligence questionnaire — SIG, SIG-Lite, CAIQ, CAIQ-Lite, HECVAT, VSAQ, or a custom spreadsheet-shaped questionnaire — and the GRC / security-program-manager team wants a first-pass draft grounded in the firm's existing control library before a security analyst reviews and signs off. Typical trigger: a `.xlsx` lands in the security inbox tied to a deal in [HubSpot](/en/tools/hubspot/) or [Salesforce](/en/tools/salesforce/), and the assigned analyst wants the mechanical 70-80% of answers pre-populated so they can spend their time on the questions that actually require judgment.
Do NOT invoke this skill for:
- **Final submission to the customer.** The skill drafts; a named security analyst reviews every answer and the deal owner signs off before the questionnaire goes back. Auto-fill plus auto-send is the failure mode this rule guards against.
- **Anything routed through a non-Tier-A AI vendor.** Questionnaire content often includes the customer's procurement metadata, internal control numbering, and (in custom formats) free-text that quotes the customer's own architecture. If the configured model is not on the firm's approved vendor list with a signed DPA covering security-program work, escalate to the security team instead of running.
- **Novel control frameworks the firm has not mapped.** If the questionnaire references a framework the control library does not cover (e.g. a sector-specific reg the firm has not yet been audited against — FedRAMP Moderate, IRAP, BSI C5), the skill will pattern-match incorrectly and produce confidently-wrong answers. Map the framework into the control library first, then run.
- **Questionnaires that are part of an active incident-response or audit finding.** Those go straight to the security team — they are not drafting exercises.
- **Anything where the customer has explicitly asked for human-written, non-AI-assisted responses.** Honor the request; don't run the skill.
## Inputs
- Required: `questionnaire` — path to the inbound `.xlsx` (most common), `.docx`, or pasted text. The skill preserves the original structure when the input is `.xlsx` so the customer receives the file in the format they sent.
- Required: `control_library` — path to the firm's mapped control library in `references/`. Defaults to `references/1-control-library-template.md`. Replace the template with the firm's actual mapped controls, indexed by framework (SOC 2 CC, ISO 27001 Annex A, NIST CSF, CIS, etc.) before first run.
- Required: `evidence_index` — path to the index of supporting evidence documents (SOC 2 report, ISO certificate, pen test summary, BCP, IR plan, privacy policy, sub-processor list). Each evidence document has an ID the control library cites; the skill emits the ID, never the file contents.
- Optional: `prior_responses` — directory of previously-completed questionnaires. The skill pattern-matches new questions against prior answers and reuses the answer when the question text and intent match (with attribution to the prior questionnaire ID, never silently).
- Optional: `customer_context` — free-text on the customer (industry, jurisdiction, deal stage). Used to bias toward more conservative answers when the customer is in a regulated industry or the deal is large.
## Reference files
Always read the following from `references/` before drafting. Without them, every answer is a generic AI-flavored response disconnected from the firm's actual control posture, and every flagged item lacks a clear escalation path.
- `references/1-control-library-template.md` — the firm's mapped control library. One entry per control, indexed by framework, with the canonical answer, the supporting evidence ID, and the date the control was last audited. Replace the template with the firm's actual controls before first use.
- `references/2-answer-format-reference.md` — the literal answer formats expected per question type (Yes/No, Yes/No with description, descriptive, document upload, certification reference, N/A with justification). The skill emits answers in the format the questionnaire expects, not the format the model defaults to.
- `references/3-novel-question-escalation.md` — the rules that decide when a question flips from "skill answers with a control citation" to "skill flags for security review." Examples: questions that introduce a control framework not in the library, questions whose answer would commit the firm to a future change (forward-looking representations), questions about specific incidents.
## Method
Run the four sub-tasks in order. Do not parallelize: classification feeds control matching, which feeds answer drafting, which feeds the review-flag decision.
### 1. Question classification
For each row in the questionnaire, identify:
- **Response type expected** — Yes/No, Yes/No-with-description, free-text descriptive, document-upload (the customer wants the actual evidence doc), certification-reference (cite a cert and attestation date), or N/A-with-justification.
- **Topic** — access control, encryption-at-rest, encryption-in-transit, key management, BCP/DR, IR, sub-processor management, change management, vulnerability management, secure SDLC, privacy/DSR, etc.
- **Framework hint** — if the question text or column header references a specific framework section (`CC6.1`, `A.9.4.2`, `CCM IAM-09`), capture it. Framework-aware matching is more reliable than topic-only matching.
Why classification first, not "answer everything in one pass": question type controls answer format, and topic + framework hint together drive the control-library lookup. Skipping classification and letting the model free-draft is the most common reason auto-fill produces inconsistent or miscategorized answers.
### 2. Control-library matching
For each classified question, look up the matching control in `references/1-control-library-template.md`. Match priority:
1. Exact framework section match (the question cites `CC6.1`, the library has an entry for `CC6.1`).
2. Topic + sub-topic match within the same framework.
3. Cross-framework topic match (e.g. SOC 2 CC6.1 maps to ISO 27001 A.9.4.2 maps to CCM IAM-09 — the library notes the equivalences).
4. No match → flag as novel-question for escalation. Do not improvise.
Why control-library-first instead of letting the model improvise an answer from documentation: the library entries have already been reviewed by security and legal. Improvised answers reintroduce that review burden on every run, defeat the time saving, and create contractual-representation risk because every questionnaire answer is a representation the firm makes to the customer.
### 3. Answer drafting with citations
For every matched question, emit the canonical answer from the library in the format the question expects (per `references/2-answer-format-reference.md`). Every answer carries:
- The control ID cited (e.g. `SOC2.CC6.1`).
- The supporting evidence ID (e.g. `EV-SOC2-2025`, `EV-PENTEST-2025-Q1`).
- The library entry's `last_reviewed` date.
- A confidence score: `high` (exact match, library entry under 90 days old), `medium` (cross-framework match or library entry 90-180 days old), `low` (cross-framework match plus library entry over 180 days old, or stale evidence).
Pattern-match against `prior_responses` only as a tie-breaker on borderline matches; never let a prior answer override the current control library. Prior answers from 18 months ago can be flatly wrong.
### 4. Review-flag decision
For every question meeting the rules in `references/3-novel-question-escalation.md`, replace the drafted answer with a "needs security review" block. The block contains: the question text, the candidate answer the skill considered (so the analyst has a starting point), the trigger that fired the escalation, and any candidate control IDs the matching pass surfaced.
Also flag for review: any answer with `low` confidence, any forward-looking commitment, any answer that touches a specific incident or audit finding, and any question whose answer differs from the prior response on a recent (under 90 days) questionnaire — the divergence itself is a signal the analyst should look at it.
## Output format
Write the original `.xlsx` back with the answer cells populated, plus a sibling markdown summary the analyst opens first. The summary's literal format:
```markdown
# Questionnaire draft — <Customer name>
Questionnaire type: <SIG | SIG-Lite | CAIQ | HECVAT | custom>
Control library version: <control library last_reviewed date>
Total questions: <N>
- Answered (high confidence): <count>
- Answered (medium confidence): <count>
- Answered (low confidence — review): <count>
- Flagged for security review: <count>
- Document-upload required: <count>
---
## Q4.2 — "Do you encrypt data at rest using AES-256 or stronger?"
**Response type:** Yes/No-with-description
**Topic:** encryption-at-rest
**Framework hint:** CCM EKM-03
**Drafted answer:**
> Yes. All customer data is encrypted at rest using AES-256-GCM via
> AWS KMS-managed keys. Key rotation is automatic on a 365-day cycle.
**Citation:** control SOC2.CC6.7 / ISO27001.A.10.1.1 / CCM EKM-03
**Evidence:** EV-SOC2-2025 §6.7, EV-KMS-CONFIG-2025-Q1
**Confidence:** high
**Library entry last reviewed:** 2026-02-14
---
## Q9.3 — "Describe your process for handling FedRAMP Moderate boundary changes."
**Flagged for security review**
- **Trigger:** Framework not in control library (FedRAMP Moderate not
yet mapped).
- **Candidate control:** none — closest is `SOC2.CC8.1` (change
management), but the framework-specific question requires a
framework-specific answer.
- **Action:** Security analyst to draft. Do not improvise.
---
```
The `.xlsx` carries the same answers in the customer's original cell layout, with a comment on each cell containing the control ID, evidence ID, and confidence so the analyst can audit without flipping back to the markdown summary.
## Watch-outs
- **Stale control library produces confidently-wrong answers.** A SOC 2 Type II report from 2024 cited as evidence in 2026 will be rejected by any sophisticated customer. Guard: every output's summary header writes the control library's `last_reviewed` date and every cited evidence document's effective date. The analyst rejects any draft where the library is older than 90 days or any cited evidence is past its attestation window, and refreshes the library before re-running.
- **Answer-improvisation when the library does not match.** A model under pressure to "fill the cell" will free-draft an answer that sounds plausible. Guard: the matching pass emits explicit `no match → flag` rather than degrading gracefully. The skill refuses to write a cell without a control ID; cells without a citation surface in the summary as flagged-for-review, never as drafted answers.
- **Certification expiration.** A SOC 2 cited as current may have expired between the last library refresh and today. Guard: the evidence index carries an `effective_through` date per evidence document. If today is past `effective_through`, the skill drops the evidence cite and downgrades the answer to `low` confidence with a note that the cert is in renewal. The analyst chases the renewed cert before the questionnaire goes back.
- **Forward-looking commitments treated as facts.** "Will you support customer-managed keys by Q4?" is a roadmap question, not a control question. Drafted as Yes/No, it becomes a contractual representation. Guard: `references/3-novel-question-escalation.md` lists the linguistic patterns ("will you", "do you plan to", "by what date") that force a flag-for-review regardless of confidence.
- **Pattern-match drift from prior responses.** Last year's response said "365-day key rotation"; this year's policy says 90 days. Reusing the prior answer creates a contractual misrepresentation. Guard: prior-response matching is a tie-breaker only, never an override. When a prior answer differs from the current library entry, the skill flags the divergence in the summary so the analyst can see it.
# Control library — TEMPLATE
> Replace this template's contents with the firm's actual mapped control
> library. The vendor-dd-questionnaire skill reads this file on every run;
> without the firm's real controls, every answer is a generic AI-flavored
> response disconnected from the firm's actual security posture.
## How this file is used
The skill matches every question in the inbound questionnaire to one entry below. Match priority is: exact framework section → topic + sub-topic within framework → cross-framework topic → no match (flag for escalation). The skill never improvises an answer when no entry matches.
Each entry is keyed by canonical control ID and lists the equivalences across the frameworks the firm has been audited against. Add new frameworks here, not in the skill body.
## Library metadata
- `library_version`: replace with the firm's library version tag.
- `last_reviewed`: YYYY-MM-DD — the skill prints this in the summary header, and the analyst rejects drafts where this is older than 90 days.
- `frameworks_covered`: e.g. `[SOC 2 Type II, ISO 27001:2022, NIST CSF, CCM v4]` — questionnaires citing frameworks not on this list are flagged for security-team mapping.
---
## Entry: access-control / least-privilege
- **Canonical ID:** `IAM.001`
- **Framework equivalences:**
- SOC 2: `CC6.1`, `CC6.2`, `CC6.3`
- ISO 27001:2022: `A.5.15`, `A.5.18`
- CCM v4: `IAM-08`, `IAM-09`
- NIST CSF: `PR.AC-1`, `PR.AC-4`
- **Canonical answer:** Replace with the firm's actual one- or two-sentence answer. Example shape: "Access is granted role-based via <IdP>; quarterly access reviews enforce least privilege; provisioning and de-provisioning are logged."
- **Supporting evidence:** `EV-SOC2-<year>` (§<section>), `EV-IDP-CONFIG-<year>`
- **Last audited:** YYYY-MM-DD
- **Notes for the analyst:** any caveats — e.g. "answer differs for production vs corporate access; if question scope is corporate-only, flag for human review."
---
## Entry: encryption-at-rest
- **Canonical ID:** `CRYPTO.001`
- **Framework equivalences:**
- SOC 2: `CC6.7`
- ISO 27001:2022: `A.8.24`
- CCM v4: `EKM-03`, `EKM-04`
- **Canonical answer:** Replace with the firm's actual answer. Example shape: "All customer data at rest encrypted with <algorithm>; customer-managed keys available on the <tier> plan; key rotation every <N> days via <KMS>."
- **Supporting evidence:** `EV-SOC2-<year>`, `EV-KMS-CONFIG-<year>-Q<n>`
- **Last audited:** YYYY-MM-DD
- **Notes for the analyst:** if the question asks specifically about customer-managed keys (CMK / BYOK) and the firm offers them only on a higher tier, the answer changes by deal — flag.
---
## Entry: encryption-in-transit
- **Canonical ID:** `CRYPTO.002`
- **Framework equivalences:**
- SOC 2: `CC6.7`
- ISO 27001:2022: `A.8.24`
- CCM v4: `EKM-03`
- **Canonical answer:** Replace with the firm's actual answer. Example shape: "TLS <min version> enforced on all external endpoints; HSTS enabled; cipher suite restricted to <list>."
- **Supporting evidence:** `EV-PENTEST-<year>-Q<n>`, `EV-SSLLABS-<year>-<month>`
- **Last audited:** YYYY-MM-DD
---
## Entry: incident response
- **Canonical ID:** `IR.001`
- **Framework equivalences:**
- SOC 2: `CC7.3`, `CC7.4`, `CC7.5`
- ISO 27001:2022: `A.5.24`, `A.5.25`, `A.5.26`
- CCM v4: `SEF-02`, `SEF-03`, `SEF-04`
- **Canonical answer:** Replace with the firm's actual answer. Example shape: "Documented IR plan reviewed annually; tabletop conducted every <N> months; security incidents reported to affected customers within <N> hours of confirmation."
- **Supporting evidence:** `EV-IR-PLAN-<year>`, `EV-TABLETOP-<year>-<month>`
- **Last audited:** YYYY-MM-DD
- **Notes for the analyst:** notification SLA varies by contract; default to the policy SLA but flag if the customer's MSA carries a shorter window.
---
## Entry: business continuity / disaster recovery
- **Canonical ID:** `BCP.001`
- **Framework equivalences:**
- SOC 2: `A1.2`, `A1.3`
- ISO 27001:2022: `A.5.29`, `A.5.30`
- CCM v4: `BCR-01`, `BCR-08`
- **Canonical answer:** Replace with the firm's actual answer. Example shape: "RTO <hours>, RPO <minutes>; DR plan tested <frequency>; multi-AZ deployment with cross-region failover for <component list>."
- **Supporting evidence:** `EV-BCP-<year>`, `EV-DR-TEST-<year>-<month>`
- **Last audited:** YYYY-MM-DD
---
## Entry: sub-processor management
- **Canonical ID:** `VEND.001`
- **Framework equivalences:**
- SOC 2: `CC9.2`
- ISO 27001:2022: `A.5.19`, `A.5.20`, `A.5.21`
- CCM v4: `STA-07`, `STA-09`
- **Canonical answer:** Replace with the firm's actual answer. Example shape: "Sub-processor list maintained at <URL>; customers notified <N> days before adding a new sub-processor; right-of-objection per DPA §<n>."
- **Supporting evidence:** `EV-SUBPROCESSORS-<year>-<month>`, `EV-DPA-TEMPLATE-<year>`
- **Last audited:** YYYY-MM-DD
---
## Entry template — copy this for new controls
- **Canonical ID:** `<DOMAIN>.<NUMBER>`
- **Framework equivalences:**
- SOC 2: `<section>`
- ISO 27001:2022: `<annex section>`
- CCM v4: `<control ID>`
- NIST CSF: `<function.category-N>`
- **Canonical answer:** the firm's reviewed answer, one to three sentences.
- **Supporting evidence:** `EV-<DOC>-<year>`
- **Last audited:** YYYY-MM-DD
- **Notes for the analyst:** caveats, scope notes, deal-specific variants the analyst needs to know about.
# Answer format reference — TEMPLATE
> The vendor-dd-questionnaire skill emits answers in the format the
> questionnaire expects, not the format the model defaults to. This file
> documents the canonical format per response type. Replace the example
> phrasings with the firm's house style and tone.
## Why this file exists
A SIG question and a CAIQ question on the same control expect different answer shapes. SIG-Lite expects single-cell `Yes/No`. Full SIG expects `Yes/No` plus a free-text justification in the adjacent column. CAIQ expects `Yes/No/NA` plus a CCM-aligned response. The skill picks the shape from this file based on the response-type classification done in Method step 1.
If a question's expected format does not match any of the patterns below, the skill flags it for the analyst rather than guessing the shape.
## Format: Yes/No (single cell)
- **When used:** SIG-Lite, simple binary checklists.
- **Allowed values:** `Yes`, `No`, `N/A`. No prose.
- **Skill behavior:** If the canonical answer in the control library is not a clean binary, the skill downgrades to `low` confidence and flags. Binary cells are the most-misread; never improvise.
## Format: Yes/No-with-description (two cells)
- **When used:** Full SIG, most CAIQ questions, custom questionnaires.
- **Allowed values:** Cell A: `Yes` / `No` / `N/A`. Cell B: free-text description, typically 1-3 sentences.
- **Description shape:** lead with the affirmative, name the control, cite the evidence section. Example skeleton:
> Yes. <One-sentence statement of what the firm does>. Documented in
> <evidence ID> §<section>.
- **N/A justification:** when answering N/A, the description must explain why N/A applies (scope, applicability, alternative control). Bare `N/A` triggers a re-flag from the analyst.
## Format: descriptive free-text
- **When used:** "Describe your process for…", "Explain how…", "What is your approach to…".
- **Length target:** 3-6 sentences. Longer answers signal the model is padding.
- **Shape:** state the policy → state the implementing control → state the cadence (testing, review, audit) → cite the evidence ID.
- **Skill behavior:** must cite the canonical answer's source control ID; must not improvise process steps that are not in the library entry. If the library entry is shorter than the answer the skill wants to write, the skill writes only what the library covers and flags for analyst expansion.
## Format: document-upload
- **When used:** "Please attach your <SOC 2 / ISO cert / pen test summary / DPA / sub-processor list>".
- **Skill behavior:** the skill never writes a cell value. Instead, the summary lists the document the customer is asking for and the matching evidence ID from the index. The analyst handles the upload through the firm's evidence-sharing channel (NDA-gated portal, trust center, etc.) — never by attaching docs to the questionnaire file itself.
## Format: certification-reference
- **When used:** "Are you SOC 2 Type II certified?", "Do you hold ISO 27001 certification?".
- **Allowed values:** Cell A: `Yes`. Cell B: certification name + attestation period + auditor name. Example skeleton:
> Yes. SOC 2 Type II covering <period start> through <period end>,
> issued by <auditor>. Report available under NDA via <trust center
> URL>.
- **Skill behavior:** pulls dates from the evidence index, not from the control library entry. If the cert is past `effective_through`, the skill answers "in renewal" and flags. Never claim a current cert when the evidence shows it has lapsed.
## Format: N/A with justification
- **When used:** Question targets a capability the firm does not offer (e.g. on-premises deployment for a SaaS-only firm) or a framework the firm is not subject to.
- **Shape:** `N/A` plus a one-sentence justification naming the reason (scope, applicability, alternative control).
- **Skill behavior:** flag for analyst review even when the library entry says N/A — N/A answers are most likely to draw a follow-up question from the customer's security team, and the analyst should see them before submission.
## Format: forward-looking / roadmap
- **When used:** "Will you support…", "When do you plan to…", "Is this on your roadmap…".
- **Skill behavior:** never answer. Always flag for review. Roadmap answers are contractual representations and require product + legal sign-off, not security alone.
## Format: incident or audit-finding-specific
- **When used:** "Have you had a breach in the last 12 months?", "Describe any open audit findings", "Have you been subject to a regulatory action?".
- **Skill behavior:** never answer. Always flag for review. These questions require the security and legal teams; the skill cannot represent the firm on them.
# Novel-question escalation criteria — TEMPLATE
> The vendor-dd-questionnaire skill consults this file at the end of
> every question's processing. Any question matching one or more rules
> below is replaced with a "needs security review" block instead of a
> drafted answer. Replace the example thresholds with the firm's actual
> policy.
## Why this file exists
Auto-fill is safe only on questions the firm has already answered (via the control library) for situations the firm has already encountered. Everything else — novel frameworks, forward-looking commitments, incident-specific questions, low-confidence matches — is where the skill produces confidently-wrong answers if allowed to proceed. This file is the explicit list of "do not improvise" triggers.
If you find yourself wishing the skill would just answer one of these anyway, the right move is to add the situation to the control library (so the answer is reviewed once, then reusable) — not to weaken these rules.
## Hard escalation triggers (always flag)
A question matching any one of these is flagged for security review. The skill emits the question text, the candidate answer it considered (if any), the trigger that fired, and any candidate control IDs the matching pass surfaced.
### 1. Framework not mapped in the control library
If the question references a framework section the library does not cover (e.g. `FedRAMP Moderate AC-2`, `IRAP §<n>`, `BSI C5 OPS-01`) and no cross-framework equivalent is recorded, flag. Do not pattern-match to a "close enough" framework section — the customer is reading the answer through the lens of the framework they cited.
### 2. Forward-looking commitment
Linguistic patterns that flag automatically:
- `will you support`
- `do you plan to`
- `is on your roadmap`
- `by what date`
- `when do you intend`
- `future support for`
Roadmap answers are contractual representations and require product + legal sign-off, not security alone. The skill never answers these.
### 3. Specific incident or audit finding
Linguistic patterns that flag automatically:
- `have you had a breach`
- `describe any open audit findings`
- `regulatory action`
- `data subject request`
- `enforcement action`
- `material weakness`
These require the security and legal teams; the skill cannot represent the firm on them.
### 4. Customer-specific architecture or contract clause
Questions that quote the customer's own architecture, MSA, or DPA back at the firm and ask the firm to confirm — for example "Confirm your deployment matches the architecture in Schedule 3" — require deal-team review. The skill does not have access to customer-specific schedules and cannot confirm.
### 5. Low-confidence match
Any answer the matching pass scored as `low` confidence (cross-framework match plus library entry over 180 days old, or stale evidence) flips to flag-for-review even though a candidate answer exists. The candidate is included in the flag block so the analyst has a starting point.
### 6. Divergence from a recent prior response
If `prior_responses` contains an answer to a substantially-similar question from the last 90 days, and that prior answer differs from the current control library entry, flag both — the divergence itself is the signal the analyst should investigate. (Did the policy change? Did the prior questionnaire have a wrong answer? The skill cannot decide.)
## Soft escalation triggers (flag if combined)
Two or more of these together flag for review; one alone is allowed through with a note in the analyst summary.
- Customer is in a regulated industry the firm has not served before (per `customer_context`).
- Customer's deal size is in the firm's top decile (per `customer_context`).
- Question is in a topic the firm has fewer than 3 prior-response examples for.
- Library entry's `last_reviewed` is between 90 and 180 days old.
The "combined" rule exists because individually these are weak signals, but together they correlate with the questionnaires that get the most follow-up scrutiny.
## Allowed-vendors precondition
The skill refuses to run unless the configured AI vendor is on the firm's approved list. Replace this list with the firm's actual approved vendors.
- `<vendor 1>` — approved for security-program work, DPA on file dated YYYY-MM-DD.
- `<vendor 2>` — approved for security-program work, DPA on file dated YYYY-MM-DD.
If the configured vendor is not on this list, the skill exits with an error message naming the missing vendor. Do not bypass with a CLI flag; the precondition exists because questionnaire content is firm-confidential and customer-confidential simultaneously.
## Escalation block format
When a question is flagged, the skill emits the following block instead of an answer:
```markdown
**Flagged for security review**
- **Question:** <verbatim question text>
- **Trigger:** <which rule above fired; if multiple, list them>
- **Candidate control:** <control ID if matching surfaced one, else "none">
- **Candidate answer the skill considered:** <text or "none">
- **Action:** Security analyst to draft. Do not improvise.
```
The analyst sees the block in the summary, can accept the candidate as a starting point or rewrite from scratch, and signs off on every flagged question before the questionnaire goes back.