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).
When invoked, determine the current state and take the right action.
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:
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?"
None of the expected filenames appear anywhere in the loaded instructions. Treat this as first-time setup. Run First-Time Setup below.
The user started setup previously and didn't finish, or paths exist without files behind them. Resume where they left off:
Files exist but some contain unfilled placeholder values. Fill gaps:
<!-- TODO --> — explicit placeholder<!-- ... --> used as stand-in values
(e.g., <!-- your name -->, <!-- org name -->, <!-- manager name -->)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:
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.
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.
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."
~/my-iq-context or ~/OneDrive/my-iq-context as
defaults. Substitute $HOME for %USERPROFILE% in any path the skill
produces later.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?"
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:
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.
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):
Factual questions to ask only if pre-fill didn't cover them:
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?"
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:
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?"
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:
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?"
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:
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.
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?"
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:
If the user doesn't share samples (or in addition to them), ask these questions one at a time:
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?"
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:
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."
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:
%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.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)..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:
Prerequisites. File symlinks on Windows need either Developer Mode enabled or an elevated PowerShell. Check Developer Mode with:
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:
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:
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.
Back up the existing file to <file>.bak-<yyyyMMddHHmmss> so nothing
is lost. Never delete.
Create the symlink pointing to %USERPROFILE%\.agents\AGENTS.md
(skip if the user already ran it themselves under Option B):
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:
%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.## 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.## 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.@<path>
pointers for files the user skipped."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:
| 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.
Be direct, warm, and specific. You're an interviewer, not a coach. Don't editorialize, compliment, or offer opinions about the user's answers.
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):
Rules:
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.
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:
# 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?
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.
<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.
If a write to a context file fails:
If an existing context file cannot be parsed (missing headings, broken tables, garbled content):
Contributed by @lakshmistoltz.