Add AL implementation guidance skill

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
Jesper Schulz-Wedde 2026-09-16 13:20:57 +02:00
parent d608d89cf0
commit 1cb2b32afe
16 changed files with 1120 additions and 31 deletions

View file

@ -63,15 +63,24 @@ application-area: [all]
`inputs` is a list of abstract input types the skill **accepts**. Standard values:
`pr-diff`, `object-list`, `file-path`, `folder-path`, `repository`,
`telemetry-query`, and `development-plan`. Semantics are any-of: the
`telemetry-query`, `development-plan`, `implementation-diff`,
`decision-context`, and `consumed-guidance`. Semantics are any-of: the
orchestrator supplies whichever listed input types it has, and the skill is
invoked with a non-empty subset of its declared `inputs`. A skill that cannot
proceed with the supplied subset MUST return `outcome: "not-applicable"`.
`implementation-diff` is the current patch or structured changed-file/source
context, including exact affected files. `decision-context` identifies the
current phase, bounded next decision, affected symbols, changed AL properties
or tokens, tests or acceptance obligations, and stable decision/evidence
identifiers. `consumed-guidance` is optional consumer-owned deduplication input;
BCQuality does not persist it.
`outputs` is always a single-element list naming the output kind:
- `findings-report` — evaluates an input and reports defects or observations.
- `development-guidance-report` — selects and summarizes applicable BCQuality knowledge for an existing development plan without changing the target repository.
- `implementation-guidance-report` — selects focused, additional BCQuality knowledge for a current implementation or validation decision without changing the target repository.
`file-path` is one file. `folder-path` is a directory whose recursively
contained files form the complete current-state input, such as a Business
@ -340,6 +349,108 @@ The skill is read-only with respect to the target repository: no edits, generate
Reference SHAs, when present, identify the files read; they do not prove runtime pinning on their own. The consumer records and verifies the actual immutable BCQuality checkout used for both enrichment and final review, plus its filtering policy and run provenance outside the target repository. See [agent-consumption.md](../agent-consumption.md).
## Implementation-guidance-report contract
An action skill with `outputs: [implementation-guidance-report]` emits one JSON document:
```json
{
"skill": { "id": "al-implementation-guidance", "version": 1 },
"outcome": "completed | not-applicable | no-knowledge | partial | failed",
"outcome-reason": "string",
"summary": {
"request": "string",
"phase": "string",
"decision": "string",
"decision-key": "string",
"evidence-fingerprint": "string",
"candidates": 0,
"selected": 0,
"omitted-consumed": 0
},
"pins": {
"knowledge-checkout": "full commit SHA | unpinned",
"development-plan": "consumer-supplied id/version/digest | unpinned",
"implementation-evidence": "consumer-supplied id/digest | unpinned"
},
"context": {
"bc-version": "string",
"technologies": ["string"],
"countries": ["string"],
"application-area": ["string"],
"affected-files": ["string"],
"affected-symbols": ["string"],
"changed-tokens": ["string"],
"unknown": ["bc-version | technologies | countries | application-area"]
},
"knowledge": [
{
"path": "string",
"sha": "string",
"used-for": "string",
"constraints": ["string"],
"sample-paths": ["string"]
}
],
"validation-considerations": [
{ "id": "string", "reason": "string", "evidence": "string" }
],
"deduplication": {
"strategy": "omit-exact-consumed-match",
"omitted": [
{
"path": "string",
"decision-key": "string",
"evidence-fingerprint": "string",
"prior-decision": "string"
}
]
},
"suppressed": [
{
"reference": { "path": "string", "sha": "string" },
"reason": "layer-precedence | configuration"
}
],
"unresolved": ["string"]
}
```
The report is strict JSON with no surrounding commentary and is read-only with
respect to both the target repository and consumer workflow state. Index,
report, and scratch artifacts stay outside the target.
`summary` is the compact current phase/decision record. Its decision key and
evidence fingerprint are copied from `decision-context`, not generated by the
skill. `pins` preserves consumer-supplied plan and implementation identifiers;
`knowledge-checkout` is the actual checkout SHA only when established, otherwise
`unpinned`. A pin records identity, not safety or correctness.
`candidates` is the number of unique relevant articles before consumed-guidance
omission, so `selected + omitted-consumed` cannot exceed it.
`context.affected-files`, `affected-symbols`, and `changed-tokens` contain exact
current implementation evidence, not broad planned domains. Paths use forward
slashes and are repository-relative. The knowledge, validation, suppression,
unknown-context, and reference-integrity rules from
`development-guidance-report` apply unchanged.
`deduplication.strategy` is always `omit-exact-consumed-match`. An omitted entry
must exactly match a supplied consumed article path, decision key, and evidence
fingerprint. Its path is absent from `knowledge`. `summary.omitted-consumed`
equals `deduplication.omitted.length`. A changed decision key or evidence
fingerprint permits the article to be selected again. The consumer owns and
persists consumed state; BCQuality remains stateless.
`completed` requires at least one selected article, complete evaluation, and no
material unresolved applicability. `not-applicable` means a required readable
repository, plan, implementation diff, or decision context is missing or the
task is outside applicability. `no-knowledge` requires empty `knowledge` and
means no additional applicable constraints for this exact decision/evidence;
it is not a functional-correctness, safety, completeness, or release claim.
`partial` keeps incomplete evaluation or materially unresolved applicability
explicit. `failed` covers retrieval, reference-integrity, or other errors.
`outcome-reason` is required for `partial` and `failed`.
## Composition (super-skills)
A **super-skill** is an action skill whose frontmatter declares a non-empty `sub-skills: [...]`. A super-skill does not evaluate knowledge files directly; it invokes other action skills and composes their output.
@ -440,4 +551,9 @@ Conforms to the DO output contract.
## How orchestrators consume output
An orchestrator invokes an action skill with an input appropriate to the skill's declared `inputs` and uses the single output kind declared in frontmatter. It maps a `findings-report` to PR comments, build gates, or IDE diagnostics, and a `development-guidance-report` to additional constraints for its existing implementation workflow. These are the two output schemas defined by this contract; the consumer retains ownership of implementation and delivery.
An orchestrator invokes an action skill with an input appropriate to the skill's
declared `inputs` and uses the single output kind declared in frontmatter. It
maps a `findings-report` to PR comments, build gates, or IDE diagnostics; a
`development-guidance-report` to constraints for an existing plan; and an
`implementation-guidance-report` to focused constraints for the next current
decision. The consumer retains ownership of implementation and delivery.