mirror of
https://github.com/github/awesome-copilot.git
synced 2026-06-16 20:51:26 +00:00
chore: publish from staged
This commit is contained in:
@@ -0,0 +1,766 @@
|
||||
---
|
||||
name: setup-my-iq
|
||||
description: |
|
||||
Create, set up, or update the personal context portfolio: structured markdown files describing
|
||||
who you are, how you work, your teams, and your tool/ADO configuration. Runs the interview
|
||||
workflow for first-time setup and targeted edits for updates.
|
||||
|
||||
Trigger this skill when the user asks to: set up their context, create or update their context
|
||||
portfolio, "create my IQ", "set up my IQ", edit their profile, add/remove a stakeholder,
|
||||
update ADO config, change team info, update pillars, or set up any plugin configuration.
|
||||
Trigger when another skill fails to find context (missing files or TODO markers) and needs
|
||||
context populated. Also trigger when the user mentions a context change in passing
|
||||
(e.g., "my manager changed", "we added someone to the team") to offer a context file update.
|
||||
|
||||
Do NOT trigger for read-only questions like "who's on my team?" or "what's my ADO config?".
|
||||
Those are answered directly from the context files referenced in the loaded custom
|
||||
instructions; no skill is needed.
|
||||
---
|
||||
|
||||
# Setup My IQ: Create and Update Context Portfolio
|
||||
|
||||
Create and maintain the personal context portfolio: a set of structured markdown
|
||||
files that represent who you are, how you work, and what matters to you. The files
|
||||
can live anywhere on disk (OneDrive folder, a git repo, a local directory, etc.).
|
||||
What ties them into the agent is a pointer in one of the user's custom instructions
|
||||
files (`AGENTS.md`, `copilot-instructions.md`, `CLAUDE.md`, or any `*.instructions.md`
|
||||
that the host loads into the session).
|
||||
|
||||
## How This Skill Works
|
||||
|
||||
When invoked, determine the current state and take the right action.
|
||||
|
||||
### Discovering existing context
|
||||
|
||||
Scan the session for references to the files this skill creates. The host has
|
||||
already merged all relevant custom instructions files into the session:
|
||||
`AGENTS.md` (workspace or user-scope), `copilot-instructions.md`,
|
||||
`CLAUDE.md`, any `*.instructions.md` file, and similar host-specific equivalents.
|
||||
It doesn't matter which file the pointer came from, just look for the filenames:
|
||||
|
||||
- `identity.md`
|
||||
- `role-and-responsibilities.md`
|
||||
- `team.md`
|
||||
- `tools-systems-and-config.md`
|
||||
- `communication-style.md`
|
||||
- `preferences-and-constraints.md`
|
||||
|
||||
For each, find an `@<absolute-path>` (or equivalent path reference) anywhere in
|
||||
the loaded instruction text. That's the file's location. Don't rely on the label
|
||||
or variable name next to the path: users may name pointers differently
|
||||
(`identityProfile`, `me`, `who-i-am`, etc.). Match on the filename at the end
|
||||
of the path.
|
||||
|
||||
For each filename, classify as:
|
||||
|
||||
- **NOT REFERENCED** — no path to this filename is loaded in the session.
|
||||
- **REFERENCED, FILE MISSING** — a path is loaded but the file doesn't exist on disk.
|
||||
- **PRESENT** — path is loaded and the file exists. Read it to check for placeholders.
|
||||
|
||||
If the six filenames are in mixed states, handle them in this priority order:
|
||||
first create any NOT REFERENCED files via the interview, then fill REFERENCED,
|
||||
FILE MISSING entries, then fix incomplete fields in PRESENT files. Summarize
|
||||
the combined state to the user before starting so they know what to expect.
|
||||
|
||||
Concrete example. Suppose `identity.md` and `team.md` are PRESENT and
|
||||
complete, `tools-systems-and-config.md` is PRESENT but has TODO placeholders
|
||||
in the ADO section, `role-and-responsibilities.md` and `communication-style.md`
|
||||
are REFERENCED but the files don't exist on disk, and
|
||||
`preferences-and-constraints.md` is NOT REFERENCED. The skill should tell the
|
||||
user: "You have identity and team done. Tools-config has gaps. Role and
|
||||
communication-style are referenced but missing. Preferences isn't set up at
|
||||
all. I'll interview you for preferences first, then create role and
|
||||
communication-style, then fill the gaps in tools-config. OK?"
|
||||
|
||||
### 1. No context files referenced
|
||||
None of the expected filenames appear anywhere in the loaded instructions.
|
||||
Treat this as first-time setup. Run **First-Time Setup** below.
|
||||
|
||||
### 2. Some files referenced but missing on disk
|
||||
The user started setup previously and didn't finish, or paths exist without
|
||||
files behind them. **Resume where they left off:**
|
||||
- List which files exist and which are missing.
|
||||
- Tell the user: "You have {existing files}. Still need: {missing files}. Want to
|
||||
pick up where you left off?"
|
||||
- When choosing the next file to interview for, the priority order from
|
||||
*Discovering existing context* still applies. Within a tie, use this
|
||||
default sequence: identity -> role -> team -> tools -> communication-style
|
||||
-> preferences-and-constraints.
|
||||
|
||||
### 3. Files exist but have incomplete fields
|
||||
|
||||
Files exist but some contain unfilled placeholder values. **Fill gaps:**
|
||||
|
||||
- Scan all referenced files for any of these incomplete-field patterns:
|
||||
- `<!-- TODO -->` — explicit placeholder
|
||||
- HTML comments of the form `<!-- ... -->` used as stand-in values
|
||||
(e.g., `<!-- your name -->`, `<!-- org name -->`, `<!-- manager name -->`)
|
||||
- Any table cell or field whose only content is an HTML comment
|
||||
- List the gaps: "I found incomplete fields in {files}. Want to fill them in?"
|
||||
- For each gap, ask the specific question for that field (not the full interview).
|
||||
- Update the file in place with the user's answer.
|
||||
|
||||
### 4. Files are complete, user wants to update
|
||||
The user asked to change something, or mentioned a context change in passing
|
||||
(e.g., "my manager changed", "we hired someone new", "I moved to a different
|
||||
team"). **Targeted update:**
|
||||
- If the user mentioned the change in passing during another task, offer: "It
|
||||
sounds like your {file} may need updating. Want me to fix that now?"
|
||||
- If the user explicitly asked, proceed directly.
|
||||
- Read the file from the path resolved in *Discovering existing context*.
|
||||
- Make the edit and confirm with the user.
|
||||
|
||||
### 5. Files are complete, user wants a full refresh
|
||||
The user wants to redo a file from scratch. Re-run the interview for that
|
||||
specific file following the same steps as first-time setup.
|
||||
|
||||
---
|
||||
|
||||
## First-Time Setup
|
||||
|
||||
All `assets/...` paths in this skill are relative to this SKILL.md's
|
||||
directory. Use your file-read tool to load the bundled templates from those
|
||||
paths. If for some reason a template isn't readable, fall back to the field
|
||||
structure shown in the example walkthrough at the bottom of this file.
|
||||
|
||||
### 1. Choose context directory
|
||||
|
||||
Ask: "Where should your context files live? Anywhere persistent works: a synced
|
||||
cloud folder (OneDrive, Dropbox, iCloud), a local directory, or a git repo. Just
|
||||
pick a path you can find again later."
|
||||
|
||||
- Create the directory if it doesn't exist.
|
||||
- Store the path for later steps.
|
||||
- On macOS or Linux, suggest `~/my-iq-context` or `~/OneDrive/my-iq-context` as
|
||||
defaults. Substitute `$HOME` for `%USERPROFILE%` in any path the skill
|
||||
produces later.
|
||||
|
||||
### 2. Begin the interview
|
||||
|
||||
Introduce the process:
|
||||
|
||||
"I'm going to interview you and produce your personal context portfolio: a set
|
||||
of markdown files that represent who you are, how you work, and what matters
|
||||
to you. Any AI skill, agent, or plugin can read these files and immediately
|
||||
understand what it's working with.
|
||||
|
||||
We'll go one file at a time. I'll ask you questions, draft the file, and then
|
||||
ask you to tell me what I got wrong. You can skip any file you don't want
|
||||
right now. Ready to start?"
|
||||
|
||||
### 3. Pre-fill factual fields from available data sources
|
||||
|
||||
**This step is MANDATORY before asking any interview questions.** Do not skip
|
||||
it, even if you expect it to return nothing.
|
||||
|
||||
Before asking the user anything, attempt to gather factual data from whatever
|
||||
connected sources your environment provides. The user should never have to
|
||||
type information a connected system already knows.
|
||||
|
||||
**What to look for (per file):**
|
||||
|
||||
| File | Factual fields to pre-fill |
|
||||
|------|---------------------------|
|
||||
| `identity.md` | Name, role/title, organization, team, manager |
|
||||
| `role-and-responsibilities.md` | Teams supported, cadences (from calendar), reporting line |
|
||||
| `team.md` | Direct reports, frequent collaborators, org chart data |
|
||||
| `tools-systems-and-config.md` | ADO org/project/team/area path, repos, tools in use |
|
||||
| `communication-style.md` | Writing samples from mail/docs (ask permission first) |
|
||||
| `preferences-and-constraints.md` | No pre-fill (these are subjective boundaries) |
|
||||
|
||||
**How to execute:**
|
||||
|
||||
1. Check what data sources are available in your environment (work profile,
|
||||
directory, calendar, ADO, mail, etc.). Use only sources already authorized.
|
||||
2. Query them for the relevant factual fields for the file you're about to
|
||||
interview for.
|
||||
3. Present findings as a proposal: "I pulled some information from your work
|
||||
profile. Here's what I found -- confirm or correct before we continue."
|
||||
4. Mark each value as auto-filled so the user knows what came from a system
|
||||
vs. what you're asking them to provide.
|
||||
5. Only after the pre-fill proposal is confirmed (or if no sources are
|
||||
available), proceed to ask the remaining questions.
|
||||
|
||||
**If no data sources are available:** State that explicitly ("I don't have
|
||||
access to a work profile or directory in this environment, so I'll ask you
|
||||
directly") and proceed to the interview questions. Do not silently skip this
|
||||
step.
|
||||
|
||||
See the full rules and constraints in the *Pre-fill from available data
|
||||
sources before asking* section under Interview Rules.
|
||||
|
||||
### 4. Interview for identity.md
|
||||
|
||||
Load the template from `assets/templates/identity.md` in this skill bundle for
|
||||
the file structure.
|
||||
|
||||
**First: apply step 3 (pre-fill).** Query available sources for name, role,
|
||||
org, team, and manager. Present any findings for confirmation. Then proceed
|
||||
to the questions below for fields not covered by pre-fill.
|
||||
|
||||
Open-ended questions to ask (these always need the user):
|
||||
|
||||
- If you had to explain what you actually do to someone at a dinner party, what would you say?
|
||||
- What do people come to you for?
|
||||
|
||||
Factual questions to ask only if pre-fill didn't cover them:
|
||||
|
||||
- What's your name and current role?
|
||||
- What organization or company are you with?
|
||||
- What team are you on?
|
||||
- Who's your manager?
|
||||
|
||||
Once you have enough to draft (don't keep asking past that point), draft the
|
||||
file. Present it with the reaction pass (see Interview Rules below). Revise,
|
||||
then write to the context directory.
|
||||
|
||||
Transition: "That's identity done. Next is role-and-responsibilities, which
|
||||
captures what your weeks actually look like. Ready?"
|
||||
|
||||
### 5. Interview for role-and-responsibilities.md
|
||||
|
||||
Load the template from `assets/templates/role-and-responsibilities.md`.
|
||||
|
||||
**First: apply step 3 (pre-fill).** Query available sources for teams
|
||||
supported, recurring calendar cadences, and reporting line. Present any
|
||||
findings for confirmation before asking questions.
|
||||
|
||||
Key questions:
|
||||
|
||||
- Walk me through a typical week. What are the recurring things?
|
||||
- What teams or groups do you support?
|
||||
- For each team: what are you accountable for? What cadences do you run?
|
||||
- What decisions do you make regularly? Not big strategic ones, the routine ones.
|
||||
- What do you produce? Reports, emails, dashboards?
|
||||
- Who do you report to?
|
||||
- Are there monthly or quarterly rhythms that shape your work?
|
||||
|
||||
Once you have enough to draft, draft. Organize by team: each team gets its
|
||||
own section with responsibilities, cadences, and deliverables. Present,
|
||||
revise, write.
|
||||
|
||||
Transition: "That's role-and-responsibilities done. Next is team, which
|
||||
covers the key people in your work life. Ready?"
|
||||
|
||||
### 6. Interview for team.md
|
||||
|
||||
Load the template from `assets/templates/team.md`.
|
||||
|
||||
**First: apply step 3 (pre-fill).** Query available sources for direct
|
||||
reports, org chart, frequent collaborators (from calendar/chat). Present any
|
||||
findings for confirmation before asking questions.
|
||||
|
||||
Key approach:
|
||||
|
||||
- Who are the people you interact with most? Start with your own team.
|
||||
- Ask for team rosters (the user may paste email lists)
|
||||
- For each team, identify the lead and hierarchy
|
||||
- For key people: what do they need from you, what do you need from them?
|
||||
- Capture focus areas or pillars per person where known
|
||||
- Note interaction patterns (1:1s, scrums, syncs)
|
||||
- Is there anything an agent should know about working with or preparing for
|
||||
interactions with specific people?
|
||||
|
||||
Use information from earlier files. If they mentioned collaborators during the
|
||||
roles interview, reference them here rather than re-asking. Draft, present,
|
||||
revise, write.
|
||||
|
||||
Transition: "That's team done. Last one: tools, systems, and configuration.
|
||||
This is where we capture how everything is set up. Ready?"
|
||||
|
||||
### 7. Interview for tools-systems-and-config.md
|
||||
|
||||
Load the template from `assets/templates/tools-systems-and-config.md`.
|
||||
|
||||
**First: apply step 3 (pre-fill).** Query available sources for ADO
|
||||
org/project/team/area path, repos, and tool configuration. Present any
|
||||
findings for confirmation before asking questions.
|
||||
|
||||
Key questions:
|
||||
|
||||
- What tools and platforms do you use daily?
|
||||
- How do you organize meeting notes? Where do they live?
|
||||
- What tags or patterns classify your meetings by type and by team?
|
||||
|
||||
Then for each workstream/team the user supports (use information from
|
||||
the role-and-responsibilities interview):
|
||||
|
||||
If the user supports more than three workstreams, ask first whether they
|
||||
want to configure all of them now or start with the most important one or
|
||||
two and add the rest later. For similar workstreams, ask if the same config
|
||||
applies and only interview for differences.
|
||||
|
||||
- Does this workstream use Azure DevOps? If yes: what org, project, team,
|
||||
area path? If no, skip the ADO section for this workstream.
|
||||
- (ADO workstreams only) Are there work item title patterns to exclude from
|
||||
sprint scorecards? (e.g., estimation or review placeholder items)
|
||||
- What are the strategic pillars or sections for this workstream? These are
|
||||
used as grouping headers in weekly updates and sprint reports. Define them
|
||||
even if the workstream doesn't use ADO.
|
||||
- For ADO workstreams: which ADO Epics map to each pillar?
|
||||
- Where do sprint updates get saved? What file prefix?
|
||||
- Where do weekly updates get saved? What file prefix?
|
||||
- Is there a roadmap file for this workstream?
|
||||
|
||||
Organize with common settings at top, workstream-specific config in
|
||||
sections below. Draft, present, revise, write.
|
||||
|
||||
Transition: "That's tools and config done. Next is communication style, so
|
||||
any agent writing on your behalf can sound like you. Ready?"
|
||||
|
||||
### 8. Interview for communication-style.md
|
||||
|
||||
Load the template from `assets/templates/communication-style.md`.
|
||||
|
||||
This section is harder than the others. People describe their own voice in
|
||||
clichés. Two stronger paths: ask about negatives, and offer to analyze real
|
||||
writing samples. Use both.
|
||||
|
||||
Start by offering the samples path:
|
||||
|
||||
> "Want to share a few samples of your real writing? Paste 2 to 5 things
|
||||
> you've sent: weekly status updates, leadership emails, Loop updates, a
|
||||
> review entry, a Teams message you're proud of. I'll read them, extract
|
||||
> the voice traits I see, and propose what should go in your file. You
|
||||
> approve before anything gets written. I won't copy the raw content,
|
||||
> only the style patterns."
|
||||
|
||||
If the user shares samples:
|
||||
|
||||
- Read each sample for style only: register, sentence length, openings,
|
||||
transitions, specific words used or avoided, framing patterns, how they
|
||||
handle credit, how they handle bad news.
|
||||
- Do not copy raw sample text into the file. Extract patterns and present
|
||||
them back as proposed bullets in the file's structure.
|
||||
- Present the proposed draft: "Here's what I extracted. Tell me what's wrong
|
||||
or missing."
|
||||
- Apply the reaction pass as normal.
|
||||
|
||||
If the user doesn't share samples (or in addition to them), ask these
|
||||
questions one at a time:
|
||||
|
||||
1. "If a colleague described how you write in one sentence, what would they
|
||||
say?"
|
||||
2. "Read this sentence: *'I'd encourage you to lean into the opportunity to
|
||||
be a genuine force multiplier for the team.'* What's wrong with it for
|
||||
your voice?" (Surfaces the avoid-list faster than positive questions.)
|
||||
3. "When you write a weekly status to leadership, what do you wish you could
|
||||
automate, and what do you always end up rewriting?"
|
||||
4. "Who's the hardest audience for you to write to? What changes when you
|
||||
write to them?"
|
||||
5. "When you write about yourself in a Connect or performance review,
|
||||
what's a phrase you've caught yourself writing and immediately deleted?"
|
||||
|
||||
Draft, present, revise, write.
|
||||
|
||||
After writing, tell the user:
|
||||
|
||||
> "I won't automatically pick up on patterns over time. If you notice me
|
||||
> repeating a mistake, swapping phrases, or fighting your edits, ask me to
|
||||
> update this file and I'll fold the correction in. This file evolves when
|
||||
> you tell it to."
|
||||
|
||||
Transition: "Last one: preferences and constraints. This is how you want AI
|
||||
to behave around you. Ready?"
|
||||
|
||||
### 9. Interview for preferences-and-constraints.md
|
||||
|
||||
Load the template from `assets/templates/preferences-and-constraints.md`.
|
||||
|
||||
Most rules here are about what an agent shouldn't do unilaterally. Surface
|
||||
them by recalling concrete frustrations rather than asking for abstract
|
||||
rules. Ask one question at a time:
|
||||
|
||||
1. "When was the last time an AI tool did something you didn't want? What
|
||||
did it do, and what should it have done instead?" (One answer often
|
||||
produces 3 boundary rules.)
|
||||
2. "What's safe for an agent to do without asking you? What absolutely
|
||||
requires your approval?"
|
||||
3. "Speed or thoroughness. If you had to pick one, which?"
|
||||
4. "Are there any decisions you want AI to make for you, or do you always
|
||||
want options surfaced?"
|
||||
5. "Where do you not want an AI speaking on your behalf?" (Teams, email,
|
||||
meetings, public chats.)
|
||||
6. "Do you use any tool with persistent memory (VS Code session memory,
|
||||
an agent memory feature, etc.)? If yes, anything you want stored there,
|
||||
or specifically not stored there?" Skip the memory section if the
|
||||
answer is no.
|
||||
|
||||
Draft, present, revise, write. Apply the reaction pass.
|
||||
|
||||
Transition: "That's the interview done. Now I'll wire the files into your
|
||||
custom instructions so every agent can find them."
|
||||
|
||||
### 10. Wire the files into a custom instructions file
|
||||
|
||||
Add pointer entries to one of the user's custom instructions files so other
|
||||
skills and agents can find the new files. **Recommend user scope, not
|
||||
workspace scope.** The whole point of this context is that it's available
|
||||
everywhere, not tied to one repo.
|
||||
|
||||
Quick map: 10a detect harnesses, 10b pick the target file, 10c (only if more
|
||||
than one harness) offer to symlink them to a canonical file, 10d write the
|
||||
pointers using the bundled template.
|
||||
|
||||
On macOS or Linux, every command and path below has a POSIX equivalent.
|
||||
Substitute `$HOME` for `%USERPROFILE%` in every path, use `ln -s
|
||||
<canonical-target> <harness-file>` instead of `New-Item -ItemType
|
||||
SymbolicLink`, and skip the Developer Mode check entirely (symlinks don't
|
||||
require elevation on macOS or Linux).
|
||||
|
||||
**Step 10a. Detect which harnesses the user uses.** Check whether any of these
|
||||
user-scope paths exist (use the filesystem; no need to ask first):
|
||||
|
||||
| Harness | User-scope custom instructions path |
|
||||
|---------|--------------------------------------|
|
||||
| VS Code Copilot Chat / Claude Code | `%USERPROFILE%\.claude\CLAUDE.md` |
|
||||
| GitHub Copilot CLI | `%USERPROFILE%\.copilot\copilot-instructions.md` |
|
||||
|
||||
VS Code Copilot Chat does not natively read `%USERPROFILE%\.agents\AGENTS.md`,
|
||||
but it does read `%USERPROFILE%\.claude\CLAUDE.md`, which is the same file
|
||||
Claude Code uses. So `.claude\CLAUDE.md` is the shared user-scope file for
|
||||
those two harnesses.
|
||||
|
||||
If `%USERPROFILE%\.agents\AGENTS.md` exists, treat it as the canonical
|
||||
target. In some setups the harness-specific files above are symlinked to
|
||||
it, so a single write flows to every wired-up harness.
|
||||
|
||||
**Step 10b. Pick the target.** Apply the first rule that matches:
|
||||
|
||||
1. If `%USERPROFILE%\.agents\AGENTS.md` exists, default to it. The
|
||||
harness-specific files are symlinks to it, so a single write flows to
|
||||
every wired-up harness. Confirm with the user before writing.
|
||||
2. Else if exactly one harness-specific file exists, propose writing to it.
|
||||
Confirm. Also mention the canonical-plus-symlink option in step 10c.
|
||||
3. Else if both harness-specific files exist
|
||||
(`copilot-instructions.md` and `CLAUDE.md`), list them and ask which to
|
||||
update. Strongly recommend creating `.agents\AGENTS.md` as the canonical
|
||||
file and symlinking the others to it so a single edit reaches all
|
||||
harnesses (step 10c).
|
||||
4. Else (no user-scope custom instructions files exist anywhere), ask:
|
||||
"Which AI harness do you use most: VS Code Copilot Chat, Claude Code,
|
||||
GitHub Copilot CLI, something else?" Then create the matching
|
||||
user-scope file (`.claude\CLAUDE.md` for the first two,
|
||||
`.copilot\copilot-instructions.md` for Copilot CLI) with a
|
||||
`## Personal Context` section.
|
||||
|
||||
If the user explicitly asks for workspace scope instead, write to
|
||||
`<workspace>\AGENTS.md` and tell them the trade-off: it only applies to
|
||||
that repo.
|
||||
|
||||
**Step 10c. Offer to symlink other harnesses to the canonical file.** Only
|
||||
relevant when the user has (or wants) more than one harness. Ask: "Want me
|
||||
to make `%USERPROFILE%\.agents\AGENTS.md` the canonical file and symlink
|
||||
your other harness files to it? That way you edit once and every harness
|
||||
sees the change."
|
||||
|
||||
If yes, for each other harness file the user wants linked:
|
||||
|
||||
1. **Prerequisites.** File symlinks on Windows need either Developer Mode
|
||||
enabled or an elevated PowerShell. Check Developer Mode with:
|
||||
|
||||
```powershell
|
||||
Get-ItemPropertyValue 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\AppModelUnlock' AllowDevelopmentWithoutDevLicense -ErrorAction SilentlyContinue
|
||||
```
|
||||
|
||||
Returns `1` if Dev Mode is on. If it isn't, offer the user two options
|
||||
and let them pick:
|
||||
|
||||
- **Option A: Enable Developer Mode** (one-time, no restart needed).
|
||||
Settings -> Privacy & Security -> For developers -> turn on Developer
|
||||
Mode. Or run this in an elevated PowerShell:
|
||||
|
||||
```powershell
|
||||
New-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\AppModelUnlock' -Name AllowDevelopmentWithoutDevLicense -Value 1 -PropertyType DWord -Force
|
||||
```
|
||||
|
||||
- **Option B: Run the symlink command yourself in an elevated
|
||||
PowerShell.** Hand them the exact command (filled in with the real
|
||||
paths) and ask them to run it in a PowerShell window opened as
|
||||
Administrator. Then continue once they confirm it succeeded:
|
||||
|
||||
```powershell
|
||||
New-Item -ItemType SymbolicLink -Path '<harness-file>' -Target "$env:USERPROFILE\.agents\AGENTS.md"
|
||||
```
|
||||
|
||||
Don't keep going without either Dev Mode on or confirmation that the user
|
||||
ran the elevated command.
|
||||
2. **Back up the existing file** to `<file>.bak-<yyyyMMddHHmmss>` so nothing
|
||||
is lost. Never delete.
|
||||
3. **Create the symlink** pointing to `%USERPROFILE%\.agents\AGENTS.md`
|
||||
(skip if the user already ran it themselves under Option B):
|
||||
|
||||
```powershell
|
||||
New-Item -ItemType SymbolicLink -Path '<harness-file>' -Target "$env:USERPROFILE\.agents\AGENTS.md"
|
||||
```
|
||||
|
||||
The inline symlink steps above are enough for context wiring.
|
||||
|
||||
If the user declines symlinks, proceed with the per-harness write and move
|
||||
on. Don't push twice.
|
||||
|
||||
**Step 10d. Write the pointers.** Use the bundled AGENTS.md template at
|
||||
`assets/templates/AGENTS.md` (relative to this SKILL.md) as the source of
|
||||
truth for the `## Personal Context` block structure (header, entry labels,
|
||||
routing table, rules). Don't reinvent the format.
|
||||
|
||||
Behavior:
|
||||
|
||||
- **If the target file doesn't exist on disk yet**, create it. Make any
|
||||
missing parent directory (e.g., `%USERPROFILE%\.copilot\` or
|
||||
`%USERPROFILE%\.claude\`), copy the entire bundled template into the
|
||||
target path, replace `<CONTEXT_DIR>` with the absolute path to the
|
||||
context directory chosen in step 1, and write it.
|
||||
- **If the target file exists but has no `## Personal Context` section**,
|
||||
append the section to the end of the file (and add the `## Safety`
|
||||
section from the template if it's missing too), with `<CONTEXT_DIR>`
|
||||
replaced. Don't touch existing content above it.
|
||||
- **If the `## Personal Context` section already exists**, only add or
|
||||
update the specific entries that changed. Do not rewrite the whole
|
||||
section. Keep the existing labels and ordering; only swap the `@<path>`
|
||||
lines.
|
||||
- Only wire up files that actually exist on disk. Don't add `@<path>`
|
||||
pointers for files the user skipped.
|
||||
|
||||
### 11. Confirm and summarize
|
||||
|
||||
"That's your context portfolio. Any AI skill, agent, or plugin that reads
|
||||
your custom instructions can find these files and immediately understand
|
||||
what it's working with.
|
||||
|
||||
The files will get better as you update them over time. Projects change,
|
||||
priorities shift, and your communication style file in particular will
|
||||
evolve as you catch me repeating mistakes and ask me to fold the
|
||||
correction in. Treat these as living documents, not a finished product."
|
||||
|
||||
Show the user:
|
||||
- List of files created and their paths.
|
||||
- The custom instructions file path where the pointers were written.
|
||||
|
||||
---
|
||||
|
||||
## Context Files
|
||||
|
||||
| File | Purpose | Consumed By |
|
||||
|------|---------|-------------|
|
||||
| `identity.md` | Name, role, org, team, manager, what you do | Any skill that needs to know who the user is |
|
||||
| `role-and-responsibilities.md` | Responsibilities per team, cadences, deliverables | Status, reporting, and planning skills |
|
||||
| `team.md` | Team rosters with roles and focus areas | Skills that prepare for or summarize interactions with people |
|
||||
| `tools-systems-and-config.md` | Tools, meeting tags, ADO config per team, pillars, reporting settings | Skills that read meeting notes, run reports, or talk to ADO |
|
||||
| `communication-style.md` | Voice, tone, formatting rules, words to avoid, audience-specific adjustments | Any skill that writes content on the user's behalf |
|
||||
| `preferences-and-constraints.md` | Hard boundaries, approval rules, working preferences, memory rules | All skills (especially ones that write or send) |
|
||||
|
||||
Consumers find these files by reading the pointers loaded from any custom
|
||||
instructions file (`AGENTS.md`, `copilot-instructions.md`, `CLAUDE.md`,
|
||||
`*.instructions.md`). No MCP or dedicated reader skill is required.
|
||||
|
||||
---
|
||||
|
||||
## Interview Rules
|
||||
|
||||
### Tone
|
||||
Be direct, warm, and specific. You're an interviewer, not a coach. Don't
|
||||
editorialize, compliment, or offer opinions about the user's answers.
|
||||
|
||||
### Pre-fill from available data sources before asking
|
||||
Before walking the user through a question list, check whether any of your
|
||||
available tools or data sources can answer the factual fields for you. The
|
||||
user shouldn't have to type things a connected system already knows.
|
||||
|
||||
Common examples (use whatever your environment actually provides):
|
||||
|
||||
- A connected work profile or directory may know the user's name, title,
|
||||
organization, team, manager, and direct reports — useful for identity.md
|
||||
and team.md.
|
||||
- Calendar, mail, or chat history may surface frequent collaborators and
|
||||
recurring cadences — useful for team.md and role-and-responsibilities.md.
|
||||
- Project management or source control integrations may know the user's
|
||||
org/project/area path or repos — useful for tools-systems-and-config.md.
|
||||
- Existing writing samples in mail or documents (with the user's permission)
|
||||
may inform communication-style.md without requiring fresh samples.
|
||||
|
||||
Rules:
|
||||
|
||||
1. Only use sources the user has already authorized. Don't reach for
|
||||
anything new mid-interview without asking.
|
||||
2. Pre-fill is a proposal, not an answer. Present what you found, label it
|
||||
as auto-filled, and ask the user to confirm or correct each value
|
||||
before it goes into a file.
|
||||
3. Don't enumerate tool names to the user. Say something like "I can pull
|
||||
some of this from your work profile" rather than listing specific
|
||||
product names.
|
||||
4. Fall back to asking when no source is available, or when the data is
|
||||
ambiguous, stale, or sensitive.
|
||||
5. Open-ended fields (what you actually do, what people come to you for,
|
||||
voice, boundaries) still need to be asked. Don't fabricate them from
|
||||
indirect signals.
|
||||
|
||||
### Questions
|
||||
- Ask one question at a time. Never present lists of questions.
|
||||
- Never ask compound questions.
|
||||
- Use what you learn in earlier files to inform later interviews. Don't
|
||||
re-ask things you already know.
|
||||
- If the user goes on a tangent useful for a later file, note it and use it
|
||||
when you get there.
|
||||
- When the user gives a vague answer, push for specifics: "Can you give me
|
||||
an example?" or "What does that actually look like day to day?"
|
||||
- When you have enough to draft, say so and draft. Don't keep asking. "Enough" means you have answers covering the core fields in that file's template (for identity: name, role, org, team, manager, and what they do). You don't need to walk every listed question if earlier answers already covered the information.
|
||||
|
||||
### The Reaction Pass
|
||||
After drafting each file, present it and say:
|
||||
"Here's my draft. Read through it and tell me what doesn't sound right.
|
||||
Anything that feels off, anything I assumed wrong, anything that's missing."
|
||||
|
||||
If the user says it looks good with no changes, push once:
|
||||
"Pick one sentence that's the weakest or most generic. What would make it
|
||||
more specifically you?"
|
||||
|
||||
If they push back a second time and say it's fine, accept it and move on.
|
||||
|
||||
### File Quality
|
||||
- Keep files concise. One page, not five.
|
||||
- The files should sound like the user, not like an AI writing about them.
|
||||
- Use their language, their framing, their level of formality.
|
||||
- Never use em dashes.
|
||||
- If the user wants to skip a file, let them.
|
||||
- If the user needs to stop mid-file, tell them where you are so they can
|
||||
resume.
|
||||
|
||||
---
|
||||
|
||||
## Example: Identity Interview Walkthrough
|
||||
|
||||
This shows what a complete identity.md interview looks like from first
|
||||
question through final written file.
|
||||
|
||||
**Agent:** What's your name and current role?
|
||||
|
||||
**User:** Dana Kim, Senior Program Manager.
|
||||
|
||||
**Agent:** What organization are you with, and what team?
|
||||
|
||||
**User:** Contoso, Cloud Engineering. I'm on the Platform Operations team
|
||||
under Jordan Rivera.
|
||||
|
||||
**Agent:** If you had to explain what you actually do to someone at a dinner
|
||||
party, what would you say?
|
||||
|
||||
**User:** I keep the data platform teams running. Sprint planning, status
|
||||
reporting, making sure leadership knows what's happening without everyone
|
||||
drowning in update emails. I also build AI tooling that automates the
|
||||
repetitive parts of program management.
|
||||
|
||||
**Agent:** What do people come to you for?
|
||||
|
||||
**User:** Two things: getting a clear picture of where a project actually
|
||||
stands (not the sanitized version), and figuring out how to use AI tools to
|
||||
cut busywork out of their workflows.
|
||||
|
||||
**Agent:** I have enough to draft. Here's my draft:
|
||||
|
||||
```markdown
|
||||
# Identity
|
||||
|
||||
- **Name:** Dana Kim
|
||||
- **Role:** Senior Program Manager
|
||||
- **Organization:** Cloud Engineering, Contoso
|
||||
- **Team:** Platform Operations
|
||||
- **Manager:** Jordan Rivera
|
||||
|
||||
## What I Do
|
||||
|
||||
I keep the data platform teams running: sprint planning, status reporting,
|
||||
and making sure leadership knows what's happening without everyone drowning
|
||||
in update emails. I also build AI tooling that automates the repetitive
|
||||
parts of program management.
|
||||
|
||||
## What People Come to Me For
|
||||
|
||||
Two things: getting a clear picture of where a project actually stands (not
|
||||
the sanitized version), and figuring out how to use AI tools to cut busywork
|
||||
out of their workflows.
|
||||
```
|
||||
|
||||
Read through it and tell me what doesn't sound right. Anything that feels
|
||||
off, anything I assumed wrong, anything that's missing.
|
||||
|
||||
**User:** Looks good, ship it.
|
||||
|
||||
**Agent:** Pick one sentence that's the weakest or most generic. What would
|
||||
make it more specifically you?
|
||||
|
||||
**User:** The "keep the data platform teams running" line. It's more like I'm
|
||||
the connective tissue between engineering, leadership, and the ops cadence.
|
||||
Nobody else holds all three perspectives at once.
|
||||
|
||||
**Agent:** *(Updates the "What I Do" paragraph and writes the file to the
|
||||
context directory.)*
|
||||
|
||||
That's identity done. Next is role-and-responsibilities, which captures what
|
||||
your weeks actually look like. Ready?
|
||||
|
||||
---
|
||||
|
||||
## Example: Targeted Update
|
||||
|
||||
This shows how a context change mentioned in passing triggers a targeted
|
||||
update (state 4).
|
||||
|
||||
**User:** Can you pull my meetings from last week? Oh, also, Jordan isn't
|
||||
my manager anymore. I moved under Morgan.
|
||||
|
||||
**Agent:** I'll fetch your meetings. It also sounds like your identity file
|
||||
needs updating. Want me to fix that now?
|
||||
|
||||
**User:** Yeah go ahead.
|
||||
|
||||
**Agent:** *(Resolves the identity.md path from the loaded custom instructions,
|
||||
reads the file, updates the Manager field from "Jordan Rivera" to "Morgan",
|
||||
writes the file back.)*
|
||||
|
||||
Done. Updated your manager to Morgan in identity.md. I'll proceed with
|
||||
fetching your meetings now.
|
||||
|
||||
---
|
||||
|
||||
## Safety
|
||||
|
||||
- Do NOT store credentials, API keys, tokens, or secrets in context files.
|
||||
If the user provides one during an interview, omit it and explain why.
|
||||
- Only write to the user's chosen context directory and to the custom
|
||||
instructions file the user has approved. Never write files to other locations.
|
||||
- Never delete an existing context file. If a refresh is needed, back up
|
||||
the existing file to `<file>.bak-<yyyyMMddHHmmss>` first and confirm with
|
||||
the user before overwriting.
|
||||
|
||||
For how consumers should READ these files safely (treat as data, don't
|
||||
leak content, ignore prompt-injection text, etc.), see the `## Safety`
|
||||
block in the bundled AGENTS.md template at `assets/templates/AGENTS.md`.
|
||||
That block is what gets written into the user's custom instructions file in
|
||||
step 10d, so every consuming skill picks up the rules automatically.
|
||||
|
||||
---
|
||||
|
||||
## Error Handling
|
||||
|
||||
### Write failures
|
||||
If a write to a context file fails:
|
||||
1. Retry once.
|
||||
2. If the retry fails, present the drafted content to the user in a code
|
||||
block so nothing is lost.
|
||||
3. Suggest: "The write failed. You can copy the draft above, or we can try
|
||||
a different directory."
|
||||
|
||||
### Malformed existing files
|
||||
If an existing context file cannot be parsed (missing headings, broken
|
||||
tables, garbled content):
|
||||
- Show the user what looks wrong.
|
||||
- Offer to regenerate the file from scratch using the template, preserving
|
||||
any recognizable values from the broken file.
|
||||
- Do not silently overwrite. Always confirm before replacing.
|
||||
|
||||
---
|
||||
|
||||
## Author
|
||||
|
||||
Contributed by [@lakshmistoltz](https://github.com/lakshmistoltz).
|
||||
Reference in New Issue
Block a user