Skip to content

AI-Assisted Analysis Harness - #386

Open
iRaindrop wants to merge 6 commits into
cncf:mainfrom
iRaindrop:ai-harness
Open

iRaindrop wants to merge 6 commits into
cncf:mainfrom
iRaindrop:ai-harness

Conversation

@iRaindrop

@iRaindrop iRaindrop commented Oct 21, 2026 •

Copy link
Copy Markdown
Collaborator

Provides the directory structure and guidance under .github in the project's doc website repo for conducting an AI-assisted analysis using Copilot GitHub Enterprise.

Signed-off-by: Bruce Hamilton <scarlettbernique@gmail.com>
@netlify

netlify Bot commented Oct 21, 2026 •

Copy link
Copy Markdown

✅ Deploy Preview for cncf-techdocs ready!

Name Link
🔨 Latest commit b194e54
🔍 Latest deploy log https://app.netlify.com/projects/cncf-techdocs/deploys/6ad98abf33fe9d8f237e8998
😎 Deploy Preview https://deploy-preview-386--cncf-techdocs.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

Signed-off-by: Bruce Hamilton <scarlettbernique@gmail.com>
Signed-off-by: Bruce Hamilton <scarlettbernique@gmail.com>
Signed-off-by: Bruce Hamilton <scarlettbernique@gmail.com>

@iRaindrop iRaindrop left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed the harness against the KubeVirt .github folder it was copied from. The structure copied cleanly (all content diffs are Prettier line-wrapping). The comments below cover what is still KubeVirt-specific and what would make the harness complete end-to-end for the next project.

Suggestions not tied to a specific line:

  • Add a /rank-recommendations prompt that produces input/ai-ranked-recommendations.csv. For KubeVirt this ranking step was ad hoc; codifying it closes the only manual gap in the pipeline.
  • Reference (or add) the upload process. The issue prompts say "a process will upload" the files, but the harness does not say where that script or workflow lives.
  • Record the validated toolchain in ai-harness.md: Copilot CLI version, model, and that the prompt files rely on mode: agent and ${input:title}.
  • Add a pre-flight checklist: required labels exist in the target repo (help wanted, the three priority labels), the project's analysis.md is scaffolded from the techdocs template, and .github has no conflicting prompt files.
  • Consider an examples/kubevirt/ folder holding the KubeVirt "Current Repository" section and issue template, so the generic files stay generic but a worked example is still available.

title: AI Assisted Analysis Harness
---

## AI Assisted Analysis Overview

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This file is currently only a title and an empty H2. It is the natural home for the end-to-end workflow, which today lives partly in copilot-instructions.md and partly in people's heads:

  1. Copy _github/ to .github/ in the target project repo (note the rename; every prompt references .github/... paths).
  2. Fill in the "Current Repository" section of copilot-instructions.md.
  3. Run the sixteen /<area>-full prompts, then the three /<section>-comment prompts.
  4. Rank the recommendations into input/ai-ranked-recommendations.csv.
  5. Run /create-issues, review, then /create-umbrella-issues.
  6. Upload the issue files and paste outputs into analysis.md per the mapping table.

Moving the process text here would also let copilot-instructions.md stay focused on instructions Copilot needs at run time.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you iRaindrop, how thoughtful of you to think of all these things.

issues/
create-issues.prompt.md # Generates numbered issue files from ranked recommendations
create-umbrella-issues.prompt.md # Groups issue files into umbrella issues
output/

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This tree shows per-area outputs at .github/output/ root, but create-issues.prompt.md reads from .github/output/analysis/ and output/readme.md describes analysis/ and issues/ sub-folders. For KubeVirt the files were moved by hand. Suggest making output/analysis/ the canonical location, updating this diagram and the area/section engines to match, and adding .gitkeep (or a readme) in output/analysis/ and output/issues/ so the folders exist after clone.

message, for example
`run /create-umbrella-issues — merge the analytics and site-ownership umbrellas`.

## Current Repository

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This section is still the KubeVirt text verbatim (MkDocs, .nav.yml, yaspeller, kubevirt-doc-issue.md, the label mapping, #343). Since this is the one place the engines read project context from, suggest replacing it with a fill-in template with <!-- FILL IN --> placeholders for:

  • Project name and display name
  • Main and secondary repositories
  • Published docs site URL
  • Issues repository URL (used for repo: in issue front matter)
  • Issue template file name under issue_template/
  • CNCF project page URL
  • Assistance-request issue (cncf/techdocs#NNN)
  • Priority label mapping (urgent/high/backlog to the repo's actual labels)
  • Build system and content conventions

The issue prompts can then read these fields instead of hardcoding KubeVirt values (see comments on those files). The KubeVirt version could move to an examples/ folder as a worked example.

Copilot shall output Markdown files from the AI-assisted analysis to the
`.github/output` directory in the current directory.

### What This Repo Is

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Minor: the "Analysis responses style" section earlier in this file says readers are "Kubernetes subject-matter experts" and to "Follow Kubernetes documentation conventions". That is right for KubeVirt but not for every CNCF project; consider parameterizing it from "Current Repository" or softening to "the project's ecosystem".

- `.github/input/ai-ranked-recommendations.csv` — the ranked recommendations.
Columns: `Section`, `Area`, `Recommendation`, `Suggested Priority`
(`1 - Urgent`, `2 - High`, `3 - Backlog`).
- `.github/output/analysis/kubevirt-*-recommendations.md` — the per-area

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hardcoded kubevirt- slug. The area engines derive <project-slug> from "Current Repository"; this prompt should do the same, for example .github/output/analysis/<project-slug>-*-recommendations.md.

work them if it matters. End with this sentence, adapted as needed: "This
umbrella issue tracks recommended changes resulting from an analysis of the
KubeVirt documentation commissioned by
[CNCF](https://www.cncf.io/projects/kubevirt/). The assistance request is

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same as create-issues: the CNCF project URL and the assistance-request issue are KubeVirt-specific and should come from "Current Repository". The title on line 9 ("from the KubeVirt documentation issues") also needs genericizing.

---
title: { title } #{Issue number}
labels: [high, help wanted]
repo: https://github.com/kubevirt/user-guide/issues

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hardcoded KubeVirt repo URL in a template that is meant to be reused. Suggest a placeholder such as {issues repo URL} and have the prompt fill it from "Current Repository".

Separately: once _github is renamed to .github, issue_template/ sits next to GitHub's own ISSUE_TEMPLATE/ convention. On case-insensitive filesystems (macOS default) the two names collide, and on Linux they are easy to confuse. Consider renaming this folder to templates/.

- Otherwise name it `<project-slug>-<stem>-answers.md`.
- If a file exists by the same name, overwrite it.

Output the file to the `.github/output` directory.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggest .github/output/analysis here (and in comment, recommendations, and section-comment) so the per-area outputs land where create-issues expects them without a manual move. See the comment on the tree diagram in copilot-instructions.md.

@@ -0,0 +1,6 @@
# About this folder

Use this folder contain two sub-folders for Copilot to place output:

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Typo: "Use this folder contain two sub-folders" → "This folder contains two sub-folders". Also, Git does not track empty directories, so analysis/ and issues/ will not exist after clone; add a .gitkeep or a short readme in each.

@@ -0,0 +1,4 @@
# About this folder

Use this folder to place temporary prompt files, spreadsheets, or anything else

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Worth documenting the one required input here: ai-ranked-recommendations.csv with columns Section, Area, Recommendation, Suggested Priority (1 - Urgent, 2 - High, 3 - Backlog), since /create-issues depends on it. If a /rank-recommendations prompt is added, note that it produces this file.

Signed-off-by: Bruce Hamilton <scarlettbernique@gmail.com>
Signed-off-by: Bruce Hamilton <scarlettbernique@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant