KB AI Review Lite
Goal
Perform a lightweight AI validation pass on one or more KB files and store the result as metadata only.
This sample intentionally focuses on one pattern: create required list columns when absent, then populate them.
Use Cases
Use this skill when the user asks to:
- run a KB review
- generate review notes
- add missing review columns
- mark completion and next review timing
Prompt examples:
- "review these KB files"
- "run AI review"
- "create AI review columns and summarize"
Guardrails
- Do NOT modify the original KB document content.
- Do NOT create or upload draft Word files.
- Do NOT publish content.
- Only update the fields defined in this skill.
- Return results in Markdown.
Required Columns (Create If Missing)
Before processing, inspect library schema and ensure all columns below are present.
- AI Review State
- Type:
Choice - Internal name:
AIReviewState - Choices:
Review Complete,Not Run,Published - Recommended default:
Not Run
- AI Review Summary
- Type:
Note(multi-line text) - Internal name:
AIReviewSummary - Required capacity: long text
- When creating in a document library, you MUST set
UnlimitedLengthInDocumentLibrary: truein the field schema at creation time. The default is false and caps input at 255 characters, which will cause writeback failures. This is not optional.
- AI Draft Payload
- Type:
Note(multi-line text) - Internal name:
AIDraftPayload - Content format: Markdown
- Required capacity: long text
- When creating in a document library, you MUST set
UnlimitedLengthInDocumentLibrary: truein the field schema at creation time. The default is false and caps input at 255 characters, which will cause writeback failures. This is not optional.
- Completed On
- Type:
DateTime - Internal name:
CompletedOn
- Reviewed By
- Type:
Text - Internal name:
ReviewedBy - Value guidance: current user or active agent display name
- Review Score
- Type:
Number - Internal name:
ReviewScore - Range:
0to100
- Failure Reason
- Type:
Note(multi-line text) - Internal name:
FailureReason - Keep blank on success; set concise reason on failures
- Next Review Date
- Type:
DateTime - Internal name:
NextReviewDate
- KB Category
- Type:
Choice - Internal name:
KBCategory - Choices:
Security,Infrastructure,General,Applications,Other - Recommended default:
Other
Create missing columns with create_or_update_list and avoid duplicates.
When creating these columns for a document library, set them to unlimited-length multi-line mode.
Recertification Cadence
Set NextReviewDate using category-based intervals:
Security->CompletedOn + 30 daysInfrastructure->CompletedOn + 60 daysGeneral->CompletedOn + 90 daysApplications->CompletedOn + 90 daysOther->CompletedOn + 90 days
If the user supplies an override cadence, apply it instead.
Accuracy Baseline
Assess KB content using category-specific sources:
- Security: Validate against Microsoft MSRC, vendor CVE databases, and internal security policies.
- Infrastructure: Validate against vendor documentation (AWS, Azure, Cisco, etc.), public runbooks, and internal standards.
- Applications: Validate against application vendor docs, public APIs, and internal implementation standards.
- General: Validate for internal consistency and alignment with internal policy.
- Other: Validate for internal consistency only.
When using web sources, prioritize official vendor documentation first. Include source URLs for any critical correction.
Output Quality Gates
The review is considered weak and must be regenerated if any of the following occur:
- Findings are generic (for example: "validate details" or "recheck meanings") without concrete wrong and correct values.
Update Required: Yesis set but no specific section identifiers are listed.- Fewer than 5 concrete findings are reported when a document has obvious factual issues.
- Critical operational or safety issues are found but not labeled as
Highseverity. - No evidence source is provided for material factual corrections.
Update Required: Nois returned withFindings: 0for a parameter-heavy document (URLs, versions, timeouts, ports, phone numbers, thresholds, procedures) without explicit claim-by-claim verification evidence.- Summary says
Update Required: Nobut payload still contains open questions that imply unresolved factual uncertainty.
Minimum detail requirements when updates are needed:
- Summary must include at least 5 concrete findings; target 8+ for heavily incorrect documents.
- Each finding must include: section identifier, incorrect claim, corrected value, and severity (
High,Medium,Low).
Minimum detail requirements when no updates are claimed:
- If
Update Required: No, includeVerified Claims: <count>in summary. Verified Claimsmust be at least 8 for operational KBs.- Payload must include a
## Verification Evidencesection with at least 8 verified claim rows and sources. - If these conditions are not met, treat the review as failed quality gate.
Payload Contract (Strict)
When Update Required: Yes, AIDraftPayload MUST include all sections below in this exact order:
## Findings- Markdown table with columns exactly:
ID | Section | Incorrect Claim | Correct Value | Severity | Evidence ## Proposed Updates## Suggested Replacement Text## Open Questions## Risks
Additional strict rules:
Evidencemust contain a source URL or internal reference per finding.- For
Highseverity findings, evidence is mandatory (never blank). - If the document has obvious factual conflicts, include at least 5 finding rows.
- Do not output
## Proposed Updatesbefore## Findings. - Do not mark review complete if this contract is not met.
- If
Update Required: No, include## Verification Evidenceafter## Findingsand before## Proposed Updates.
## Verification Evidence table format when Update Required: No:
Claim | Verified Value | Source | Result
Result must be Verified for each row.
Process
Step 1 - Resolve Target and Schema
- Determine target library and files (selected items, named files, or full library).
- Run
get_list_schemato inspect column definitions. - If an item is already
Published, skip it unless re-review is explicitly requested.
Step 2 - Provision Missing Columns
- For each required column, check by internal name first.
- Create only missing columns using standard column creation. Do not create duplicates.
- Always create columns as standard columns, not autofill or content extraction columns. Column values are written explicitly by this skill. Never prompt the user to choose between column modes.
Before creating any columns, set an internal flag: columns_created = false
If any column was missing and was created during this run:
- Set
columns_created = true
After all provisioning is complete, evaluate the flag:
If columns_created = true:
- Do NOT proceed to Step 2.1 or Step 3.
- Do NOT touch any file metadata.
- Do NOT set
AIReviewStateorFailureReasonon any item. - Display the following setup notice and stop all processing:
✅ All review columns have been created with the correct names and types.
⚠️ One manual step is required before the review can run.
Two columns need their text length limit changed in SharePoint:
- Go to Library Settings → Columns
- Click AI Review Summary
- Find Allow unlimited length in document libraries
- Select Yes → Save
- Click AI Draft Payload
- Find Allow unlimited length in document libraries
- Select Yes → Save
Once both settings are saved, run the review again. All other columns are ready.
This is a one-time setup step per library. It will not be required on subsequent runs.
If the user replies in the same session confirming the column settings have been changed, proceed directly to Step 2.1 without re-provisioning or re-evaluating the flag.
If columns_created = false:
- All columns already existed before this run.
- Proceed directly to Step 2.1.
Step 2.1 - Apply Column Formatting
After provisioning columns, apply column formatting to these fields:
AIReviewState: colored pill (green=Review Complete, blue=Published, orange=Not Run)ReviewScore: percentage bar with color thresholds (green ≥80, orange ≥50, red <50)KB Category: colored pill (green=Security, blue=Infrastructure, orange=General, purple=Applications, gray=Other)
Apply formatting via the Format column option. This is a display-only change and does not affect stored values.
Step 3 - Read Content (Read-Only)
- Read each file with
cat_file. - If a file cannot be read, mark as failed and continue processing the rest.
- Extract concrete assertions to verify (versions, URLs, ports, protocols, thresholds, timing values, part numbers, and procedural safety steps).
- Validate those assertions against the Accuracy Baseline for that KB category.
Step 4 - Generate Outputs
For each readable KB, generate:
- KB Category
- Infer exactly one from:
Security,Infrastructure,General,Applications,Other. - Use the dominant subject area and operational scope.
- If uncertain, choose
Other.
- AI Review Summary (plain-language, concise)
- Include an explicit verdict line:
Update Required: YesorUpdate Required: No. - Include affected section identifiers when updates are needed (for example:
Section 2.1,Prerequisites,Step 4,FAQ - Password Reset). - Include finding counts:
Findings: <total>andHigh Severity Findings: <count>. - If verdict is
No, includeVerified Claims: <count>. - Keep output concise but specific, normally 5 to 10 bullets when updates are required.
- Suggested summary shape:
- Update Required: Yes
- Findings: 9
- High Severity Findings: 3
- Affected Sections: Section 2.1; Step 4 - Validation; FAQ - Error Code 403
- Accuracy: <short finding>
- Completeness: <short finding>
- Clarity/Currency: <short finding>
No-update summary shape:
- Update Required: No
- Findings: 0
- High Severity Findings: 0
- Verified Claims: 10
- Affected Sections: None
- Verification Scope: URL, timeout, browser minimum versions, lockout timing, support contact, cache-clear steps
- AI Draft Payload (Markdown)
- Use this structure:
## Findings
| ID | Section | Incorrect Claim | Correct Value | Severity | Evidence |
|---|---|---|---|---|---|
| F-01 | Step 3 | <wrong value> | <correct value> | High | <source URL or internal reference> |
## Verification Evidence
| Claim | Verified Value | Source | Result |
|---|---|---|---|
| Session timeout | 30 minutes | <source URL or internal reference> | Verified |
## Proposed Updates
- [Section] What should change and why
## Suggested Replacement Text
### <Section Name>
<proposed text>
## Open Questions
- <question>
## Risks
- <risk>
- Generate this payload for every successful review, including
Update Required: Nocases. AIDraftPayloadmust never be blank whenAIReviewState = Review Complete.- Ensure the payload satisfies the Payload Contract (Strict) above.
- Contradiction rule: if extracted claims conflict with baseline sources, verdict cannot be
Update Required: No.
Step 5 - Write Metadata
Set these values per reviewed file:
AIReviewSummary= generated summary textAIDraftPayload= generated Markdown draft payloadAIReviewState=Review CompleteCompletedOn= current UTC datetimeReviewedBy= current user or agent nameReviewScore= integer 0 to 100 based on quality signalsFailureReason= blankKBCategory= inferred categoryNextReviewDate=CompletedOn + category cadence(or user-provided cadence)
Writeback routing rules:
- Write
AIReviewSummaryonly toAIReviewSummary. - Write
AIDraftPayloadonly toAIDraftPayload. - Write both content fields before setting
AIReviewState = Review Complete. - Treat
AIDraftPayloadas a required success field, not an optional extra. - If either field is not configured with
Allow unlimited length in document libraries, stop writeback, setFailureReason, and tell the user to enable that property on both columns before rerunning. - After writeback, re-read both fields and confirm persisted length/content.
- If
AIDraftPayloadreads back blank, null, truncated, or missing, treat the file as failed writeback. - If the platform's refreshed-field summary does not include
AI Draft Payload, assume the payload field was not updated and do not mark the file complete.
Do not set state to Published in this skill.
Quality-gate enforcement before metadata write:
If summary or payload fails any quality gate or payload contract requirement:
- Set
AIReviewState=Not Run - Set
FailureReason=Quality gate failed: missing concrete findings/evidence or invalid payload structure - Do NOT write incomplete payload as final output
- Continue to next file
- Set
If
AIDraftPayloadis empty, omitted, or not confirmed after writeback:- Set
AIReviewState=Not Run - Set
FailureReason=Writeback failed: AI Draft Payload was not persisted - Do NOT report success for that file
- Continue to next file
- Set
If output writeback fails due field length/type constraints:
- Set
AIReviewState=Not Run - Set
FailureReason=Schema/writeback failed: review output columns do not support required payload length - Continue to next file
- Set
If verdict is
Update Required: NoandFindings = 0but verification evidence is missing or below threshold:- Set
AIReviewState=Not Run - Set
FailureReason=Quality gate failed: no-update verdict lacks required verification evidence - Continue to next file
- Set
For failed files:
FailureReason= concise failure message- Keep or set
AIReviewStatetoNot Run - Leave
CompletedOnandNextReviewDateunchanged unless user requests overwrite
Step 6 - Return Run Report (Markdown)
Return a Markdown table with:
- File name
- Action Taken (
Review Completed/Failed) - AI Review State (after)
- KB Category
- Update Required (
Yes/No) - Findings (count)
- High Severity Findings (count)
- Affected Sections (summary identifiers)
- Completed On
- Next Review Date
- Reviewed By
- Review Score
- Summary Present (
Yes/No) - Draft Payload Present (
Yes/No) - Refreshed Fields
- Failure Reason (if any)
Example Run
User: "Run AI review on all KB files in this library"
Agent actions:
- Check schema.
- Create missing columns (
AIReviewState,AIReviewSummary,AIDraftPayload,CompletedOn,ReviewedBy,ReviewScore,FailureReason,NextReviewDate,KBCategory) if needed. - Read all target KB files.
- Infer KB category per file.
- Generate concise summary + Markdown payload per file.
- Update metadata fields.
- Return Markdown table of outcomes.
Constraints
- Never edit the body content of source KB files.
- Never publish content.
- Always run schema check before updates.
- Never create duplicate columns with alternate naming.
- Continue processing remaining files if one file fails.
- If a file is already
Published, skip it unless user explicitly asks to re-review published content. - Always map each reviewed file to exactly one KB category.