Separate Project Instructions from One Task's Request

Drafted and reviewed using AI assistance.

On this page

Put repeated project guidance where future work can find it, and keep temporary experiments with the task that needs them. Before promoting a note into an instruction file, identify its intended scope, lifetime, and evidence status.

An experiment can accidentally become a permanent convention when a handoff says “use the compact layout” without retaining the experiment boundary. A sample observation can become an invented requirement when “eight rows appeared” is rewritten as “always discard blank rows.” Classifying the note first prevents those changes in meaning.

The fictional repository below has two code areas, ui/ and parser/. Its notes, instruction examples, and cleanup history are original teaching materials. No real repository instructions or agent settings were changed, and no project commands were run.

Give each note a scope and a lifetime

The example's code map is small:

ui/
└─ cards/note-card.tsx
parser/
└─ readers/rows.py

Proposed supporting documents:
.github/copilot-instructions.md
.github/instructions/ui.instructions.md
.github/instructions/parser.instructions.md
decisions/0001-parser-boundary.md
evidence/observation-E1.md
evidence/commands-to-check.md
tasks/EXP-12.md
tasks/COPY-13.md

These paths describe the fictional design; they are not a runnable checkout. There is no package manifest or implemented validation command in this teaching package.

Here are all eight candidate notes before classification:

ID Complete candidate note
N01 Preserve agreed public input/output contracts during a scoped change. In completion notes, distinguish code inspected, checks actually run, and checks still unrun.
N02 In ui/, a control that only opens the local preview is labeled Open preview. Keep the separate send action distinct.
N03 In parser/, read_rows returns records to its caller; keep file writes and network work outside that function.
N04 For experiment EXP-12, compare compact and wide note-card layouts in a local proposal. Do not treat compact as the project default.
N05 The fictional project chose a separate parsing module so its interpretation rules can be discussed independently from rendering. Record why this boundary was chosen and when to revisit it.
N06 An illustrative note E1 says one sample list showed eight rows rather than nine. The cause and the treatment of blank rows are unknown.
N07 A draft handoff proposes npm run check:board as the validation command, but no package manifest or run record is supplied.
N08 For task COPY-13, investigate a note-card wording proposal from Open preview to Preview now. Return a wording-only proposal; do not turn it into a permanent label convention.

The notes contain different kinds of information. Repetition alone would not make N07 a verified command, and a short lifetime would not make N04 unimportant to its experiment.

Choose one primary home for each note

Note Primary home Scope and lifetime
N01 Repository guidance Both code areas, across routine tasks until the policy changes
N02 Path guidance ui/, until its interface contract changes
N03 Path guidance parser/, until its function contract changes
N04 Task message EXP-12 only; ends with that experiment
N05 Architecture decision record Preserve the historical rationale, including a replacement pointer if superseded
N06 Evidence record One illustrative observation with an unresolved cause
N07 Evidence record and follow-up verification item Unchecked command proposal, not a known working instruction
N08 Current task message COPY-13 only; the proposed wording still needs a decision

N05 explains why a boundary exists. N03 tells routine parser work to preserve its current contract. Keeping their roles distinct avoids turning every architecture paragraph into an operational command.

N06 also needs careful wording. Its evidence record should retain the limited statement and the unknown cause. It should not introduce a blank-row filtering rule that no requirement selected.

Use a host-bounded file example

GitHub documents repository guidance in .github/copilot-instructions.md and path files under .github/instructions/ using applyTo globs. Its Copilot-on-GitHub instructions page describes path support for the cloud agent and code review, with matching repository and path instructions both used. The following syntax illustrates that documented host scope; check the chosen feature and settings before adapting it elsewhere.

The complete proposed repository file contains N01:

# Shared project guidance

Preserve agreed public input/output contracts unless the current agreed task changes them.

In completion notes, distinguish code inspected, checks actually run, and checks still unrun.

The complete UI path file contains N02:

---
applyTo: "ui/**"
---

For a control that only opens the local preview, retain the label `Open preview`. Keep the separate send action distinct.

The complete parser path file contains N03:

---
applyTo: "parser/**"
---

Preserve the `read_rows` contract: return records to its caller, keeping file writes and network work outside that function.

No command is listed as verified. N07 remains in evidence/commands-to-check.md, with status NOT_RUN and the missing command definition identified. A later task can inspect the actual project and establish an appropriate check before anyone presents a command as known to work.

Write the applicability matrix before relying on it

Here is the intended scope of those notes:

File being worked on Repository guidance Path guidance Temporary request
ui/cards/note-card.tsx N01 N02 N04 during EXP-12, or N08 during COPY-13
parser/readers/rows.py N01 N03 Neither UI task applies
decisions/0001-parser-boundary.md N01 No UI/parser path note Only the task that is actually updating this record

The UI label rule should not become parser behavior. An observation about one sample should not become a rule for any path. An old experiment should not remain active merely because a later task can still read its record.

This matrix is an authored applicability contract, not a test of a host's matching or instruction enforcement. If a task touches several paths, the host may supply guidance relevant to more than one area. Keep each rule's own subject explicit and verify the actual host's supported mechanism rather than assuming file separation isolates all context.

Remove a temporary rule without losing its history

Suppose a bad draft of repository guidance has accumulated these lines:

Always use the compact layout for UI work.
Always discard blank rows.
Always run npm run check:board before describing a change.

Those lines incorrectly promote N04, N06, and N07. A useful cleanup history makes the correction visible:

Step What changes in the proposed documents What remains true
H0 Identify the three bad standing directives This is an invented bad draft, not installed configuration
H1 Reclassify N04 as temporary, N06 as observation, and N07 as unchecked Their original meanings remain available
H2 Remove those directives from durable guidance EXP-12 retains its task note; E1 and the command proposal retain evidence records
H3 Close EXP-12 No compact-layout default carries into later work
H4 Open COPY-13 and compare its wording proposal with N02 The Open preview path rule remains until its intended change is resolved

Do not delete the experiment's history to make the present guidance look consistent. Retaining the task record explains why a compact variant was once considered without telling every future UI task to use it.

Make the remaining conflict explicit

COPY-13 proposes Preview now, while N02 retains Open preview. The agent should identify that conflict before treating either phrase as a settled new convention. A useful response asks whether the person intends a temporary wording comparison or a durable change, and names the affected control.

Avoid inventing a universal rule such as “the newest message always overrides the path file.” Host instruction handling and the current human's intended scope must be established in their own context. The example does not prescribe a hierarchy for every coding agent or imply a CueSpec feature.

Use this complete request for the first investigation step:

For COPY-13, investigate a wording-only proposal in ui/cards/note-card.tsx:
Open preview -> Preview now. Preserve what the action does and keep the
send action separate. Do not edit files in this first step.

Read the applicable project/path guidance. Identify N02's existing Open
preview rule and report the conflict. Ask whether this is a temporary
comparison or a durable label change; do not decide that by guessing
instruction precedence.

Keep EXP-12's compact/wide experiment out of this task. Treat E1 as an
illustrative observation with unknown cause, not a blank-row requirement.
Treat npm run check:board as an unverified proposal, not a checked command.

Before proposing instruction-file edits, verify the chosen host/feature
supports the repository/path mechanism and state its intended matching
scope. If it differs from the GitHub example, explain that difference.

Return the applicable-note map, the one-control wording proposal, the
unresolved decision, and a validation plan grounded in the actual project.
No package installation, project execution, real instruction-file edits,
publication or deployment in this investigation step.

GitHub's task guidance supports describing a clear problem and acceptance criteria and investigating before implementation. The eight-note classification and cleanup history here are our worked method for making that request precise.