Commit graph

177 commits

Author SHA1 Message Date
Jesper Schulz-Wedde
e2b7d534f9 Promote events knowledge from community to Microsoft layer
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-06-25 14:04:14 +02:00
Jeffrey Bulanadi
3769d2fbf4
Add knowledge file for raising events inside try functions (#31) 2026-06-25 13:55:06 +02:00
Jesper Schulz-Wedde
1eaf473e78
Wiring-fix: single source of truth for review leaf list + CI enforcement (#48)
De-enumerate the AL review leaf list so it lives in exactly one place:
the al-code-review super-skill's frontmatter sub-skills list.

- al-code-review.md: drop the enumerated parenthetical from description
  and remove the redundant bullet re-list in the Source section.
- README.md: remove the hardcoded count word and the enumerated domain
  list from the leaf-skill sentence.
- validate_frontmatter.py: add cross-file rule R26 asserting a
  super-skill's declared sub-skills exactly match the sibling
  al-*-review.md leaf files on disk (missing, stale, and unregistered
  leaves all fail CI).

Co-authored-by: Jesper Schulz-Wedde <jesper.schulzwedde@microsoft.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-06-25 13:49:10 +02:00
Jesper Schulz-Wedde
13f47f65a8
Seed web-services (API v2) knowledge domain (#45)
* Seed web-services (API v2) knowledge domain

Add eight web-services API page knowledge articles (each with .good.al/.bad.al samples), a new al-web-services-review leaf skill, and wire it into al-code-review and the README.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Trim web-services domain to 6 non-duplicative articles

Drop API entity-naming/camelCase and DelayedInsert articles (owned by the style domain). Reframe the committed-data and API-versioning articles to stay strictly within the endpoint design/behavior lane, and update the leaf skill's worklist tokens and Output example accordingly.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

---------

Co-authored-by: Jesper Schulz-Wedde <jesper.schulzwedde@microsoft.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-06-25 12:37:40 +02:00
Jesper Schulz-Wedde
6140a52b03
Add breaking-changes knowledge domain and review leaf skill (#44)
Seed a new breaking-changes (AL API stability) knowledge domain with six
articles plus good/bad AL samples, a new al-breaking-changes-review leaf
skill, and minimal wiring into al-code-review and the README.

Co-authored-by: Jesper Schulz-Wedde <jesper.schulzwedde@microsoft.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-06-25 12:33:30 +02:00
Jesper Schulz-Wedde
f19f0618fb
Add events knowledge domain and review leaf skill (#43)
* Add events knowledge domain and review leaf skill

Add a new `events` knowledge domain covering AL events & subscribers,
wired into the AL review pipeline.

- 3 atomic articles (+ .good.al/.bad.al samples) under
  microsoft/knowledge/events/: the IsHandled override pattern, thin
  OnBefore/OnAfter integration-event publishers, and static vs manual
  subscribers.
- New leaf skill microsoft/skills/review/al-events-review.md sourcing the
  events domain.
- Wired into microsoft/skills/review/al-code-review.md (sub-skills + Source
  + description) and README.md (leaf-skill count + domain list).

AL event syntax verified against Microsoft Learn. Samples are
demonstration-only (not compiled by CI). Additive change; no contract change.

Part of #34.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Add 12 general AL event-design articles to events domain

Add 12 atomic knowledge articles under microsoft/knowledge/events covering
general AL event-design best practices: IsHandled initialization and OnAfter
preservation, appending new event parameters, position-based event naming,
reusing/extending events, avoiding per-iteration publishing, Temp-prefixing
temporary record parameters, unabbreviated parameter names, preferring the
this keyword over IncludeSender, avoiding loosely typed parameters, not
mutating existing event contracts, and not bypassing critical operations
with IsHandled. Each article ships a .good.al and .bad.al demonstration
sample (object IDs 50240-50296; not compiled by CI). Extend the
al-events-review leaf Worklist with one targeted check per new rule.

Additive only; no contract or wiring change (events leaf already wired).

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Refine events articles after review feedback

Correct wording in five events articles to reflect that AL event
subscribers bind by parameter name, not position:

- add-new-event-parameters-at-the-end: drop the inaccurate claim that
  appending a parameter forces subscribers to be updated or causes wrong
  values; keep the append-at-end best practice.
- do-not-add-ishandled-to-an-existing-event: reframe from "breaking
  change" to the semantic/purpose shift that leaves existing subscribers
  pointless; rename the breaking-change keyword to semantic-change.
- name-events-by-publisher-position: extend the good sample with
  position-named publishers raised from table and report trigger
  contexts.
- initialize-ishandled-to-false-before-publishing: scope the detection
  and best practice to events that actually carry a var IsHandled, so an
  OnBefore with no IsHandled is not flagged.
- do-not-bypass-critical-operations-with-ishandled: add a litmus-test
  definition of a critical operation (code that cannot stand as an
  independent, self-contained unit).

Knowledge-only; no contract or wiring change.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Soften Anti Pattern wording in add-new-event-parameters article

Remove the last name-vs-position misconception from the Anti Pattern so it
is consistent with the corrected Description: mid-list insertion is framed
as noisy and harder to review rather than as forcing subscriber re-mapping.
Detection sentence unchanged.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Add events domain reviewers to CODEOWNERS

Add @AleksandricMarko and @pchriste-microsoft-com as required reviewers
for the events knowledge domain, matching the existing per-domain expert
ownership convention. Inserted in alphabetical order ahead of the
performance line.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

---------

Co-authored-by: Jesper Schulz-Wedde <jesper.schulzwedde@microsoft.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-06-25 12:24:25 +02:00
Jesper Schulz-Wedde
23d5478ac6
Add interfaces knowledge domain and review leaf skill (#42)
Adds the interfaces knowledge domain covering AL interfaces and enum-with-implementation: three atomic articles with good/bad AL samples, a new al-interfaces-review leaf skill, and additive wiring into al-code-review and the README. Purely additive; no contract change.

Part of #34.

Co-authored-by: Jesper Schulz-Wedde <jesper.schulzwedde@microsoft.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-06-25 12:20:56 +02:00
Jesper Schulz-Wedde
45c2b2f5ec
Add domain expert reviewers to CODEOWNERS (#47)
Co-authored-by: Jesper Schulz-Wedde <jesper.schulzwedde@microsoft.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-06-25 11:10:54 +02:00
Jesper Schulz-Wedde
08160b16ad
Remove warning about active development status 2026-06-24 16:22:38 +02:00
Wenjie Fan
5277150469
do.md: require strict RFC 8259 JSON with escaped quotes/newlines (#46)
Action skills emit AL source in message/suggested-code fields. Quoted
identifiers and multi-line snippets must have their embedded quotes and
newlines escaped, otherwise the consumer JSON parse fails and silently
drops the report. Add a JSON validity subsection to the output contract
making the escaping requirement explicit.

Co-authored-by: wenjiefan <wenjiefan@microsoft.com>
2026-06-24 14:06:50 +02:00
Michael Dieringer
416b30ee44
Merge pull request #14 from Curabis/curabis-docs-structure
Standard v3 + Columbo v2 - docs/ struktur og requirement persistence
2026-06-24 07:22:14 +02:00
Michael Dieringer
f13c9962de Standard v3 - add docs/ structure, Columbo writes to docs/specs/ 2026-06-24 07:21:25 +02:00
Michael Dieringer
2ee35531df Columbo v2 - reads docs/specs/, writes summaries there 2026-06-24 07:19:34 +02:00
Michael Dieringer
79230edd24
Merge pull request #13 from Curabis/curabis-standard-agents
Standard v2 - Add Columbo, Florence, M365 to all new projects
2026-06-24 07:11:29 +02:00
Michael Dieringer
80e225e58d Add Columbo, Florence, M365 to standard setup (v2) 2026-06-24 07:10:46 +02:00
Michael Dieringer
4b50a7ccc4
Merge pull request #12 from Curabis/curabis-m365
Add Microsoft 365 MCP usage guide
2026-06-24 07:02:56 +02:00
Michael Dieringer
4e9a610f4b Add Microsoft 365 MCP usage guide 2026-06-24 07:02:31 +02:00
Michael Dieringer
a12aac2b59
Merge pull request #11 from Curabis/curabis-florence
Add Florence Nightingale - Heartbeat Agent
2026-06-24 01:17:18 +02:00
Michael Dieringer
3476d6a9ad Add Florence Nightingale - Heartbeat agent 2026-06-24 01:12:31 +02:00
Michael Dieringer
47e6bde4d9
Merge pull request #10 from Curabis/curabis-columbo
Add Columbo - Customer Requirement Clarifier
2026-06-24 01:04:04 +02:00
Michael Dieringer
8a1c589ef7 Add Columbo - Customer Requirement Clarifier agent 2026-06-24 01:02:41 +02:00
Michael Dieringer
33b48fc9bc
Merge pull request #9 from Curabis/curabis-mcp-008
CURABIS-MCP-008: AI eval scores must be posted to BC posting table
2026-06-24 00:07:35 +02:00
Michael Dieringer
fb2f8f5b00 Add CURABIS-MCP-008: AI eval scores must be posted to BC posting table 2026-06-24 00:06:42 +02:00
Michael Dieringer
b7a5359b82
Merge pull request #8 from Curabis/rule/agent-must-resolve-developer-identity-from-bc
[BCQuality] Agent must resolve developer identity from BC
2026-06-23 22:22:25 +02:00
Michael Dieringer
cec927df81 Foreslaa regel: Agent must resolve developer identity from BC 2026-06-23 22:19:02 +02:00
Michael Dieringer
aad03770fa Tilfoej al-triage, al-complexity, bc-mcp til templates og curabis-standard 2026-06-23 20:33:48 +02:00
Michael Dieringer
220da9e5eb Tilfoej bc-mcp agent til templates 2026-06-23 20:32:54 +02:00
Michael Dieringer
3625596742 Tilfoej al-complexity agent til templates 2026-06-23 20:32:51 +02:00
Michael Dieringer
9bd27eab88 Tilfoej al-triage agent til templates 2026-06-23 20:32:49 +02:00
Michael Dieringer
8691ece99f Immanuel v3: PR-based approval workflow, GitHub-merge som kryptografisk verifikation 2026-06-23 20:27:47 +02:00
Michael Dieringer
0e785a7284 Tilfoej Francis til standard pipeline + PR-based approval i Mode A+B 2026-06-23 20:26:45 +02:00
Michael Dieringer
344bb41fbc Tilfoej Francis (BCQuality rule proposer) til templates 2026-06-23 20:25:16 +02:00
Michael Dieringer
47d891cee9 Opdater Immanuel: Type A/B pipeline + PR-based approval workflow 2026-06-23 20:24:55 +02:00
Michael Dieringer
4c1a0c8b78 Add CURABIS-BCMCP-008/009/010: git lifecycle must sync BC subtask dev status 2026-06-23 19:38:53 +02:00
Michael Dieringer
288f64df16 Add BCApps citations to Tier 1+2 knowledge files; add 2 new rules
- All 7 existing Tier 1/2 knowledge files now include a BCApps Reference
  section with concrete source links and observed patterns
- New: bcpt-scenarios-must-be-app-specific — PerformanceTest apps must
  include app-domain BCPT scenarios, not only Microsoft generic samples
- New: permission-sets-must-follow-least-privilege — View/Edit/Admin
  hierarchy with IncludedPermissionSets, mirroring BCApps BusFound pattern
- api-page-key-fields-must-be-editable-on-insert clarified: SystemId as
  ODataKeyField + Editable=false is valid (auto-generated); rule applies
  to consumer-provided key fields only

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-23 17:48:37 +02:00
Jeremy Vyska
4a7a34b5c9
Merge pull request #32 from thatnavguy/main
Add community UI knowledge article for default descending sort on historical pages
2026-06-23 11:35:09 +02:00
Jeremy Vyska
b05ab8df68
Merge pull request #40 from microsoft/jesperschulz-bc-knowledge-gap-analysis
Add error-handling knowledge domain and review leaf skill
2026-06-23 11:34:31 +02:00
Copilot
65f6f22157 Add open-ended bc-version range shorthand [N..]
A closed range like [23..28] wrongly implies guidance stops applying after
BC28, so a reviewer targeting BC29+ would not match the file. Introduce an
open-ended shorthand [N..] meaning ''version N and every later version''.

- validate_frontmatter.py: RANGE_SHORTHAND allows an optional upper bound;
  expand_bc_version returns the normalized string ''N..'' for open-ended.
- read.md: document the fourth bc-version form and its matching rule
  (matches target >= N; not enumerable).
- write.md: prefer [N..] over a closed range for a feature introduced in N
  and not expected to be removed.
- Apply [23..] to the actionable-errors article (actionable errors shipped
  in BC23 and are not version-bounded above).
- README: mention [N..] in the frontmatter example.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-06-23 11:20:11 +02:00
Copilot
8901b83e07 Add error-handling knowledge domain and review leaf skill
Seed the first new AL knowledge domain toward issue #34: a fully wired
error-handling domain that the review pipeline actually consumes.

- 3 knowledge articles (+ good/bad AL samples):
  - prefer-errorinfo-for-actionable-errors (ErrorInfo Fix-it/Show-it actions)
  - collect-validation-errors-with-errorbehavior (ErrorBehavior::Collect)
  - errortype-internal-vs-client-for-diagnostics (ErrorType Internal vs Client)
- New leaf skill al-error-handling-review.md, modeled on al-performance-review
- Wire the leaf into al-code-review (sub-skills, Source, description)
- README: six -> seven leaf skills

Validated: frontmatter validator clean; knowledge-index check passes
(deterministic, full coverage, selection inputs intact).

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-06-23 10:35:24 +02:00
Michael Dieringer
e11c1fd16c Add Gotcha warning: taskNo vs taskId confusion at commit time
Users refer to tasks by taskNo in conversation (e.g. 'opgave 51').
Commit messages must use taskId (e.g. 8738) — different field.
Added explicit Gotcha block and sharpened step 3 in How to find.

Approved by: mid (Michael Dieringer)
2026-06-22 14:24:39 +02:00
Michael Dieringer
34d8f372f8 Add governance agents: Francis (BC-MCP observer) and Immanuel (rule guardian)
Francis observes BC-MCP session patterns and identifies where existing rules
are too superficial (Type A sharpening) or where no rule covers the pattern
(Type B gap). Type B gaps are handed to Immanuel for Categorical Imperative
validation before entering BCQuality.

Immanuel guards the knowledge base by running four tests (universalizability,
project-specificity, clarity, additive value) before any rule is approved.
2026-06-22 04:10:58 +02:00
Michael Dieringer
6fe72d82a4
Add rule: scope task lists to current repository
When a developer asks for open tasks, only return tasks from the project(s)
linked to the current git repository. Flag it if no project is linked.

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-21 13:15:13 +02:00
Michael Dieringer
f95789907c Add rule: scope task list to current repository
When a developer asks for open tasks, only return tasks from the project(s)
linked to the current git repository. Flag it if no project is linked.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-21 13:05:23 +02:00
Michael Dieringer
4ef1c0ecc0
Merge pull request #6 from Curabis:AutoUpdate
AutoUpdate
2026-06-21 12:47:14 +02:00
Michael Dieringer
0b1054051f AutoUpdate 2026-06-21 12:46:46 +02:00
Michael Dieringer
e4038667f6
Merge pull request #5 from Curabis:startup-&-agents
Startup & agents
2026-06-21 12:34:01 +02:00
Michael Dieringer
985faf9e8d new global standard 2026-06-21 12:22:54 +02:00
Michael Dieringer
bdda44ef8a Add BC MCP task lookup recipe and commit message task ID rule 2026-06-21 11:00:06 +02:00
Michael Dieringer
42a02b9c0f Add architecture rule: shared project memory must be in repo 2026-06-21 09:32:24 +02:00
Michael Dieringer
f058095dec Add 3 testing knowledge files from book review
- test-one-when-per-test: one WHEN per test, split if multiple actions
- ui-test-codeunit-naming: _UT suffix for TestPage-based codeunits
- test-feature-scenario-tags: [FEATURE]/[SCENARIO] comment structure

Based on patterns from Automatiserede tests med Business Central (Dieringer).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-20 21:38:12 +02:00