CopilotAtelier.psd1
|
@{ RootModule = 'CopilotAtelier.psm1' # Replaced at build time by GitVersion. ModuleVersion = '6.1.0' GUID = '67bbef0b-f4de-4c1b-bb5a-b34104beb5b7' Author = 'raandree' CompanyName = 'raandree' Copyright = '(c) raandree. All rights reserved.' Description = 'Portable GitHub Copilot customization library. Ships custom agents, auto-applied instructions, on-demand skills, prompt templates, and lifecycle hooks, and installs them into the well-known ~/.copilot discovery folders that VS Code, the GitHub Copilot CLI, and Claude Code read.' PowerShellVersion = '5.1' FunctionsToExport = @('Export-CopilotAtelierContributorProfile','Get-CopilotAtelierClientAdapter','Get-CopilotAtelierContributorProfile','Get-CopilotAtelierFootprint','Get-CopilotAtelierProfile','Get-CopilotAtelierSkillHealth','Get-CopilotAtelierVersion','Import-CopilotAtelierContributorProfile','Install-CopilotAtelier','Remove-CopilotAtelierContributorProfile','Set-CopilotAtelierContributorProfile','Test-CopilotAtelier','Uninstall-CopilotAtelier','Update-CopilotAtelier') CmdletsToExport = @() VariablesToExport = @() AliasesToExport = @() PrivateData = @{ PSData = @{ Tags = @( 'Copilot' 'GitHubCopilot' 'VSCode' 'Agents' 'Skills' 'Prompts' 'Instructions' 'Hooks' 'AI' 'Windows' 'Linux' 'MacOS' ) LicenseUri = 'https://github.com/raandree/CopilotAtelier/blob/main/LICENSE' ProjectUri = 'https://github.com/raandree/CopilotAtelier' IconUri = 'https://raw.githubusercontent.com/raandree/CopilotAtelier/main/assets/CA-glyph-on-light.png' Prerelease = 'preview0020' ReleaseNotes = '## [6.1.0-preview0020] - 2026-10-21 ### Added - Add a route-coverage ratchet to the Memory Bank routing evaluation. `Test-MemoryBankRouting.ps1` now returns `IndexRoutes` and `UncoveredRoutes`, read by its own parser of the index (a case that expects the Full-read fallback exercises no route), and `tests/MemoryBankRouting.Tests.ps1` requires every route to have a real case or an entry on a baseline that states a reason and may only shrink, so a route added without a real case fails. Two real, owner-labelled cases cover `general` and `role`, the last routes without one, so the baseline starts empty. See [Decision record 0014](.memory-bank/decisions/0014-prove-memory-bank-routing.md). - Add the read-only [`Wait-DetachedResult.ps1`](skills/long-running-job-monitor/scripts/Wait-DetachedResult.ps1) for short detached Pester/build runs: bounded 500 ms checks, a measured result line and log tail, job exit `0`/`1` or timeout `124`, with async-only guidance in the monitor Skill and both execution Instructions. - Add contributor calibration: every agent pitches answers and questions at your familiarity with each knowledge area (`new`, `familiar`, or `expert`; `familiar` until you say otherwise), and in `new` and `familiar` areas illustrates an abstract finding with a concrete example; every calculated or reconstructed result names its sources and method. Every technical question offers a recommended answer and a `not sure, you pick` option; a delegated answer becomes an assumption flagged for expert review, counts only when you write it yourself, and never authorizes an irreversible, destructive, or security-relevant action; a question that authorizes such an action comes without the option. A level changes wording and depth, never warnings, tests, or reviews, and is never written to a repository. See [How Much Explanation You Want](README.md#how-much-explanation-you-want). - Add [`docs/SECURITY-REVIEW.md`](docs/SECURITY-REVIEW.md), the independent security review of contributor calibration with every finding, its severity, and its resolution. - Add the `/simpler` and `/deeper` Prompts, which re-explain the last answer one familiarity level simpler or deeper and keep that level for its knowledge area for the rest of the session. - Add the `contributor-profile` Skill and the commands `Get-`, `Set-`, `Export-`, `Import-`, and `Remove-CopilotAtelierContributorProfile`, which keep your familiarity levels in a private Contributor profile outside every repository, so a saved level shapes later sessions without being restated. The profile lives in the `contributor` folder of the Canonical target, which syncs through OneDrive, or under LocalApplicationData on a machine without one; Export and Import carry it across and merge entry by entry. Every write takes a lock, replaces the file atomically, previews with `-WhatIf`, and refuses any path inside a git working tree, also one reached through a junction or symbolic link; `Get-CopilotAtelierContributorProfile -WorkspacePath .` shows where the profile lives and what a workspace receives, with aliases masked. A write changes only an entry you chose: the one `-Contributor` names, the one whose alias matches your git address, or a new one, the first in the profile or, beside others, your own with `-NewContributor`. It never falls back to the only or the default entry, so on a shared account one person''s level cannot land in another person''s entry. Knowledge area names may start with a dot followed by a letter or a digit, such as `.NET`. `contributor-profile` is mandatory in every installation profile. See [contributor-profile](skills/contributor-profile/SKILL.md). - Add saved familiarity levels to every session of a workspace that declares Knowledge areas under `## Knowledge areas` in `.memory-bank/projectbrief.md`: the SessionStart hook adds one data-only sentence with your levels for those areas in VS Code, the Copilot SDK host, and Copilot CLI, and a new PostToolUse hook, `Add-FamiliarityContext.ps1`, re-sends them on the first successful tool call after a compaction. Where the host runs no PreCompact hook, as for a manual or a background compaction in VS Code, it re-sends them on the first tool call after a turn ends, or 5 minutes after the last re-send; these re-sends stop once a session has received 12,000 characters of levels, about 3,000 tokens. That hook runs only on machines where a profile entry is on and rates an area, through `~/.copilot/hooks/contributor-profile.json`, and adds about one more hook launch to each successful tool call there, measured at 0.8 to 2 s depending on the machine and the host; the one call per turn that re-sends takes about 0.4 to 0.8 s longer, and in a workspace that declares areas, session start takes about 0.2 to 0.6 s longer. A registration written from an earlier release''s template is replaced with the current one at the next profile write. On a synced Canonical target, a registration record that OneDrive delivers before its file is reported as pending by `Get-CopilotAtelierContributorProfile` and left alone until both arrive; `Remove-CopilotAtelierContributorProfile -RegistrationOnly` clears one that never settles, and `Get-CopilotAtelierContributorProfile` lists possible conflict copies of the registration in the hooks folder. `/simpler` and `/deeper` offer to save a changed level, the `memory-bank` projectbrief template gains the optional section, and the PRE-FLIGHT line names the profile state as counts only. A saved level steers the model without binding it: a saved `expert` level does not reliably make replies terse, and after a compaction a plugin-only installation, which has no hook registration, and a reply that makes no tool call do not receive the levels again. - Add task-ledger creation and checking to the `subagent-dispatch` Skill. A sequence of prompts you run one per chat now starts from four templates ([ledger](skills/subagent-dispatch/assets/task-ledger.template.md), [sequence README](skills/subagent-dispatch/assets/sequence-readme.template.md), [brief](skills/subagent-dispatch/assets/brief.template.md), and [report](skills/subagent-dispatch/assets/report.template.md)), and the read-only [`Test-HandoffSequence.ps1`](skills/subagent-dispatch/scripts/Test-HandoffSequence.ps1) reports a brief without a ledger row, a row without a brief, a status outside the vocabulary, a Rulings table that does not say who decided, an unfilled slot, a broken link, a user-profile path, and, given the repository, a commit that is not on the integration branch, however the row writes it. It never reads through a link and never repeats a forbidden term in a finding. The Skill states the rules for running such a sequence: one status vocabulary, one writer per row, a start gate on named dependencies, a check of another run''s commits and report before building on its row, a dated `Update` instead of a rewritten brief, rulings that say who decided, delegation that authorizes no remote action, commands handed over in the final reply, and verified bundles for another machine. [`notes-evals.md`](skills/subagent-dispatch/notes-evals.md) records its trigger sweep and its output comparison against the version before. - Add the `/migrate-handoff-sequence` Prompt, which converts a folder of existing prompts to the task-ledger process. The read-only [`Get-HandoffSequenceInventory.ps1`](skills/subagent-dispatch/scripts/Get-HandoffSequenceInventory.ps1) first proposes each `NN-<slug>.prompt.md` name, reads the agent, names the slots a brief lacks, lists the lines that hint at a dependency or a remote step, finds a report or commits that show a prompt already ran, and hashes every file the migration must keep; it never reads through a link. The Prompt shows its plan and asks one question at a time before it writes, keeps every original under `originals/` after a SHA-256 check and never over a file that exists, marks each fact it cannot supply `needs input` instead of inventing it, moves a rule that several prompts repeat into the README''s shared rules, writes a ledger whose reconstructed statuses come only from evidence and are recorded as agent decisions for your review, adds a publish brief when you confirm a remote step, changes nothing but missing slots on a folder that already follows the process (after a copy of each brief it edits), and writes a migration report. `Test-HandoffSequence.ps1` gains `-Original`, which proves every original survived byte for byte. The Skill''s [reference](skills/subagent-dispatch/references/sequence-operations.md#migrating-a-folder-of-prompts) carries the same safeguards for hosts that do not run Prompts. - Add the Remote grant: add a Grant marker such as `[[allow-remote: git push, gh pr create]]` to your prompt, and the agent can run each named remote mutation once in that chat session, until your next prompt or after 15 minutes at most. The new `UserPromptSubmit` hook [`Add-RemoteGrant.ps1`](com.github.copilot/hooks/scripts/Add-RemoteGrant.ps1) records the grant and `Block-RemoteMutation.ps1` consumes it, the same way in VS Code Local, the Copilot SDK agent host, and Copilot CLI; a hook `ask` could not do that, because the agent host approves it without a prompt under `chat.tools.global.autoApprove` or Allow all. The block message names the marker to ask for, `x2` allows an operation twice, `git push --force` is its own phrase that also covers `--all`, `--tags`, `--delete`, and `--mirror` (abbreviated or quoted too), and a command that can run an operation more than once, such as a loop, a function, a script block, a retry, or a schedule, asks for 20 uses because the guard cannot count how often it runs; the block message then tells the agent to run the operation as its own command to ask for one. `git reset --hard`, `git clean -f`, and `--no-verify` stay blocked. A grant is a file an agent with file access could forge, so it prevents accidents and is not a containment boundary. See [Authorizing a remote mutation](com.github' } } } |