- docs/notes/archive/: move ai-ethics-security-principles.md and team-self-organisation-sprint-brief.md (superseded/out of scope) - plugins/bin/skills/: delete to-issues and to-prd (stale mattpocock adoptions with no Gitea target; replacement tracked separately) - scripts/install.sh: remove dead .agents/skills/ deployment block and provider skill adapter symlink code; neither path exists in this repo Closes items 8, 9, 10 of issue #15. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
22 KiB
Team Self-Organisation Sprint — Brief
Context
We are a new, cross-functional team of four — two developers (one transitioning into a product lead role) and two technical business-side colleagues. We came together from different parts of the organisation, each with different backgrounds and habits. We have been focused on advanced prototyping and building a business case, and now need to shift: from scrappy prototype mode into a functioning team with a shared way of working.
We are building internal AI-enabled tooling, with scope still evolving. Our longer-term ambition is to become the organisation's pathfinder and centre of excellence for AI-assisted development. That future depends on getting our foundations right now — before individual habits calcify and before more people join.
The fastest path to reliable results is a team that collaborates consistently and has standardised how it works with AI. This sprint is an investment in speed, not a detour from it.
Core design principle: AI-readable by default
Everything this sprint produces must be usable by both humans and AI agents. This is not a nice-to-have — it is a design constraint.
A Confluence page that AI cannot read is incomplete. A convention that is not committed to the repo as context does not exist for Copilot. Every artifact we produce — conventions, templates, constitution, context files — must be structured so that Copilot can load and act on it when needed.
We are not writing documentation about how we work with AI. We are building the context layer through which AI collaborates with us.
What This Sprint Is Not
- A process handbook nobody reads
- A Scrum certification exercise
- A distraction from shipping
What This Sprint Produces
By the end of the sprint, the following must exist and be in active use:
- Copilot context layer —
copilot-instructions.mdand aCONTEXT.mdcommitted to every repo; the AI-readable foundation everything else references - Skills library — agreed set of shared skills (open-source adopted + team-built stubs); committed to
.agents/skills/ - Development conventions — branching strategy, commit convention, PR process, code review standards including AI-generated code; committed as context, not only written in Confluence
- AI constitution — a written working agreement between team members and AI agents: mutual expectations, data handling rules, human-in-the-loop boundaries, quality gates
- Documentation structure — agreed on what lives where (Azure repo vs Confluence vs SharePoint vs the forge), with a minimal starter structure in place
- Prioritised backlog — issues for decisions made in the session, plus scoped follow-up grill sessions for topics too complex to resolve in one sitting
Format
Part 1 — Half-day discovery session (~3.5 hours) All team members present. Facilitated by the product lead. Use this brief as the agenda.
At the end of each block: capture decisions, write issues for clear actions, flag follow-up grill topics for anything too complex to decide now.
Part 2 — One-week self-organisation sprint Work through the backlog. Run follow-up grill sessions for flagged topics and generate their issues. Daily standups (15 min). Retro at end. No other ceremonies yet.
Part 1 Session Agenda
1. Anti-patterns round (20 min)
Each person names one thing from a previous team they want to leave behind — a process, habit, or failure mode they have seen and do not want to repeat.
Record everything. These become the negative space that shapes our decisions in every block that follows.
Issues to generate: none directly — outputs feed the other blocks.
2. Scope alignment (30 min)
Answer these together:
- What are we actually building for the next 3 months?
- What is explicitly out of scope for now?
- Who are our users and stakeholders?
- What does success look like, and for whom?
No process decision made in this session is meaningful without a shared view of what we are building. If scope remains genuinely unclear after this block, that is issue number one.
Issues to generate:
- "Define and document team scope and 3-month goals" — if not resolved in session
- "Identify stakeholders and success criteria"
Follow-up grill if needed: full scope definition session if the team cannot align in 30 minutes.
3. Ways of working (45 min)
We use Azure DevOps as our issue tracker. The question is not which tool — it is how we use it.
Decide each of the following. For anything not resolved, flag as a follow-up grill topic.
Issue management
- What fields, labels, and states does every issue have?
- What makes an issue "ready to pick up"?
- What is the definition of done for an issue?
Development conventions
- Branching strategy — trunk-based development (recommended: simpler, less merge overhead, suits small teams) or feature branches?
- Commit convention — do we adopt conventional commits (
feat:,fix:,chore:,docs:,refactor:,test:)? This enables readable history and automated changelogs. - Changelog tooling — if we adopt conventional commits, do we generate changelogs automatically? Decide yes/no; tooling selection can be a follow-up.
- PR process — minimum reviewers, checklist, merge conditions?
- AI-generated code review — does AI-generated code require a different or additional review step? What does approval mean when AI wrote the code?
Workstream model
How does a piece of work move from idea to shipped? Agree on a shared pattern so everyone handles work the same way. A lightweight but effective model:
Kick-off → Grill (align on what and why) → Artifact (brief, spec, or decision doc)
→ Issues (break into actionable tasks) → Implement → Review → Commit
The kick-off type shapes the artifact:
- New feature or improvement → brief or spec
- Bug → bug description → diagnose
- Architecture decision → decision doc → ADR after the fact
- Exploration or uncertainty → grill session → exploration note → issues (optional)
Decide:
- Do we adopt this pattern or a simpler variant?
- What do we call each stage? (Use our own language, not borrowed jargon.)
- Where do the artifacts live? (Repo, Confluence, or both?)
Ceremonies
- Standup cadence and format?
- Retro frequency?
- Sprint length?
Issues to generate:
- "Write and commit development conventions to repo" (branching, commits, PR process)
- "Configure Azure DevOps issue structure" (fields, labels, states, DoD)
- "Write AI-generated code review standard"
- "Define and document team workstream model"
- One issue per unresolved decision flagged as follow-up
4. AI collaboration standards (45 min)
This block determines the quality floor for everything we produce. Copilot is a collaborator, not a tool — it needs context, standards, and a shared library to produce reliable results.
4a. Context files
Every repo should contain two committed files that AI agents read on demand:
copilot-instructions.md — the AI's entry point into the repo. Contains:
- What this repo is and what it does
- Domain language and key concepts
- Constraints and conventions (commit style, code style, what not to do)
- Pointers to other context files
Keep it short — it is an index, not a content dump. AI agents pull what they need from it.
CONTEXT.md — deeper domain context the AI loads on demand. Contains:
- Glossary of domain terms used in the codebase
- Architecture principles and key decisions
- What is in scope and out of scope for this repo
Decide:
- What is the minimum content for each file?
- Who owns and maintains them?
- Do we start with a shared team template that all projects inherit, or build per-project first? (See appendix for the global vs local decision.)
4b. Skills library
Skills are reusable slash commands for Copilot and other AI tools. They are defined as SKILL.md files and stored in .agents/skills/<skill-name>/SKILL.md in the repo. This location is read natively by GitHub Copilot, Claude Code, Cursor, and others.
Decide:
- Which open-source skills do we adopt immediately? (examples: code review, PR description, test generation, commit message)
- What team-specific skills do we need to build? (examples: domain-specific scaffolding, our PR template, our issue template)
- Who owns the skills library and how do we add to it?
- How do we share skills improvements back to the open-source community if relevant?
4c. Workflow patterns
A workflow is a chain of AI interactions for a multi-step task. Examples:
grill → draft → reviewfor designing a featuredescribe bug → reproduce → hypothesise → fix → testfor debuggingwrite context → generate scaffold → review → refinefor new repo setup
Decide:
- Do we have recurring multi-step AI tasks that would benefit from a defined workflow?
- Do we formalise these as shared workflow files, or keep them as team knowledge for now?
Flag as follow-up grill: custom agents / Copilot Extensions — worth evaluating but too complex to decide in this session.
4d. Knowledge levelling and sharing
AI knowledge is uneven across the team. Left unaddressed, this creates a single point of failure — one person who knows how to get good results from Copilot, and everyone else dependent on them. That is a risk, not an advantage.
Decide:
- How do we share what we learn? (a shared Confluence page, a standing agenda item in retro, a skills library contribution pattern?)
- When someone discovers a better way to use Copilot, how does that become team knowledge rather than personal knowledge?
- How do we onboard a new team member to our AI collaboration standards quickly?
- Is there a minimum baseline of AI literacy we expect from every team member? How do we get everyone there?
Flag as follow-up grill if needed: AI learning curriculum or structured onboarding for new members.
Issues to generate:
- "Write and commit
copilot-instructions.mdtemplate" - "Write and commit
CONTEXT.mdtemplate" - "Set up
.agents/skills/library with initial adopted skills" - "Identify and stub team-specific skills needed"
- "Define knowledge sharing process for AI learnings"
- "Schedule custom agents evaluation session" (follow-up grill)
5. AI constitution (30 min)
This is a written working agreement between team members and AI agents. It is committed to the repo and loaded as context — AI agents read and follow it, not just humans. It is a living document, not a compliance checklist.
Write it together. Cover each of the following:
Enterprise policy alignment
- Does the organisation already have an AI usage policy? If yes, our constitution must align with it — not duplicate or contradict it.
- Are there approved and prohibited AI tools or models we must respect?
- Are there data classification rules (e.g. confidential, internal, public) that govern what can go into an AI model?
- Who in the organisation do we need to inform or align with before finalising our constitution?
If enterprise policies exist, reference them explicitly in our constitution rather than restating them. Add only what they do not cover.
Data rules
- What information must never go into an AI model? (PII, credentials, internal strategy, unreleased roadmap)
- What is the process if someone accidentally shares something they should not have?
Human-in-the-loop
- What actions require human approval before AI executes, commits, or sends?
- What can AI do autonomously without review?
- At what point in a task does a human need to check the output?
Code quality gate
- How do we accept AI-generated code before it merges?
- Does AI-generated code require a specific reviewer or checklist?
- What does it mean to "own" code that AI wrote?
Reliability standards
- What does good AI output look like for us?
- When do we trust it and when do we verify it independently?
- How do we handle confidently wrong AI output?
Attribution
- Do we mark AI-generated code or content? How?
- Does it matter for internal vs external-facing output?
Accountability
- If an AI agent makes a mistake, who is accountable?
- How do we detect AI mistakes before they cause problems?
Feedback loop
- How do we evolve these rules as we learn?
- Where do we capture what works and what does not?
Issues to generate:
- "Write and commit AI constitution v1"
- "Define process for escalating AI constitution violations or edge cases"
6. Documentation structure (20 min)
Decide where each type of content lives. The goal is one clear answer per content type — not "it depends."
| Content type | Candidate location | Decide |
|---|---|---|
| Repo context files (CONTEXT.md, copilot-instructions.md, skills) | Azure repo | Likely yes — source of truth for AI |
| Architecture Decision Records (ADRs) | Azure repo | Recommended — close to the code they document |
| Work artifacts (briefs, specs, decision docs) | Azure repo or Confluence | Decide |
| Process docs and ways of working | Confluence | Likely yes |
| Meeting notes and retro outputs | Confluence | Likely yes |
| Polished artifacts for wider org | SharePoint | Likely yes |
| "The forge" | Unknown | Must identify: what is it and what role does it play? |
Rule: if a document needs to be AI-readable, it lives in the repo. If it is human-only reference, Confluence or SharePoint.
On Architecture Decision Records (ADRs)
An ADR is a short document that records a hard-to-reverse decision: what we decided, what alternatives we considered, and why. The value is not the document itself — it is that six months from now, when someone asks "why did we do it this way?", the answer is written down and findable.
ADRs are written after a decision is made, not before. They live in the repo alongside the code they affect (e.g. docs/adr/0001-branching-strategy.md). They are never updated — if a decision changes, a new ADR supersedes the old one.
Decisions worth recording as ADRs: branching strategy, commit convention, global vs local config structure, AI constitution scope, skills library ownership model.
Issues to generate:
- "Define and document content-type-to-location mapping"
- "Set up Confluence space structure"
- "Identify what 'the forge' is and whether it has a role in our docs structure"
- "Write ADRs for decisions made in this session"
7. Session close: identify follow-up grill sessions (15 min)
For each topic not resolved in the session, scope a follow-up grill:
Topic: [what needs to be resolved]
Why it is blocked: [what cannot move forward until this is decided]
Who needs to be in the room: [roles, not names]
Rough timebox: [30 min / 1 hour / half day]
Likely follow-up topics:
- Custom agents / Copilot Extensions evaluation
- Skills library design (versioning, contribution model, org adoption path)
- Scope definition (if not resolved in block 2)
- Documentation structure detail (if the forge question is unresolved)
- Prompting standards and shared prompt library
Open questions the session must resolve
| Question | Why it matters |
|---|---|
What goes into copilot-instructions.md? |
Determines AI output quality baseline for everyone |
| What context files do we commit to every repo? | Without this, AI agents cannot navigate our codebases |
| What is our branching and commit convention? | Shapes every PR, review, and history going forward |
| What code review standard applies to AI-generated code? | Without this, quality is undefined |
| What is our workstream model? | Without a shared pattern, every piece of work is handled differently |
| Do enterprise AI policies exist that constrain our constitution? | Our rules must align with — not contradict — existing policy |
| Do we start with a shared team repo (global) or per-project first? | Every other config decision depends on this architecture choice |
| What is our documentation structure? | Without this, knowledge scatters immediately |
| What is "the forge" and what role does it play? | Cannot finalise docs structure without this |
Appendix: an approach worth knowing about
The patterns described in this brief — context files, skills libraries, provider adapters, AI constitutions — are not invented from scratch. There is a coherent architectural approach behind them, worth understanding as a team before you decide how to implement your own version.
The core idea
Think of AI collaboration config as a layered system with a clear separation of concerns:
- A provider-agnostic core — your conventions, principles, domain language, and team agreements written in plain language, with no references to specific tools. This content is stable: it does not change when you switch from Copilot to another tool, or when Copilot changes its format.
- Thin provider adapters — tool-specific files (
copilot-instructions.md, VS Code settings, CLI config) that translate your core content into the format each tool expects. These change when tools change; your core does not. - Two tiers of context — not everything should be loaded all the time. A short always-loaded file (your
copilot-instructions.md) contains universal rules and pointers. Deeper content (domain language, architecture decisions, specific conventions) lives in separate files the AI reads on demand. This keeps context lean and relevant.
The implication: write your conventions once in plain language, then adapt them per tool. Do not write them once per tool.
Content as distinct primitives
Treat each type of AI-collaboration content as its own thing:
- Instructions — stateless rules that define how AI should behave (coding style, communication tone, what to avoid)
- Skills — reusable slash commands for specific tasks (write a PR description, generate a test, summarise a diff); the most portable primitive across tools
- Workflows — chains of skills for multi-step tasks (grill a design → draft a spec → break into issues)
- Agents — role definitions that give AI a specific perspective for a task (reviewer, architect, developer)
- Prompts — shared fragments embedded in multiple skills or workflows
Starting with skills is the right move. They are immediately useful, easy to share, and work across GitHub Copilot, Claude Code, Cursor, and others via the Agent Skills open standard (.agents/skills/ directory, SKILL.md format).
Global versus local
This is the most important architectural decision you will make. There are two levels:
Global (team-level, shared across all projects) A shared repo or config location that holds your team's baseline: core instructions, shared skills library, universal AI constitution, provider adapter templates. Every project inherits from this. When you update a convention here, all projects can pull it in.
This is what a centre of excellence maintains. It is the artefact that makes you reusable beyond your own team.
Local (per-project)
Each project repo holds what is specific to it: a CONTEXT.md with that project's domain language, project-level overrides to the shared instructions, and project-specific skills. Local config extends the global baseline — it does not replace it.
The rule: if a convention applies to all your projects, it belongs in the global layer. If it is specific to one project's domain or stack, it belongs local.
Starting point for a small team: begin with everything local, one repo at a time. Extract to a global layer once you see the same content appearing in multiple projects. Do not over-engineer the global layer before you know what belongs in it.
What grows into what
A team that gets this right ends up with:
- A shared team repo (the global layer) that any new project can pull from
- Per-project context files that are thin, focused, and AI-readable
- A skills library that grows incrementally as the team identifies recurring tasks worth automating
- An AI constitution that evolves with each sprint retro
That shared team repo — the global layer — is the seed of a CoE artefact. It is also the thing that makes onboarding a new team member (or a new AI agent) fast: point them at the global repo and they have your conventions, your domain language, and your working agreements in one place.
Things to decide as a team
Before you start building, align on:
- Do we start with a shared team repo now, or per-project first and extract later?
- Who owns the global layer and how do we propose changes to it?
- How do projects pull updates from the global layer — manual copy, sync script, or something else?
- What is our policy on AI agents modifying context files directly vs. humans only?