Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions .changeset/desktop-package-guidance.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
---
"@fluentui-react-native/desktop-driver": patch
"@fluentui-react-native/desktop-test": patch
"@fluentui-react-native/storybook-desktop": patch
"@fluentui-react-native/storybook-desktop-runtime": patch
---

Add package-owned agent guidance and user entry points, and restrict published
contents to the package files required at runtime and for documentation.
14 changes: 14 additions & 0 deletions .changeset/desktop-test-macos-fixes.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
---
'@fluentui-react-native/desktop-test': patch
'@fluentui-react-native/storybook-desktop': patch
---

Fix macOS desktop runs: canonicalize the reporting root so artifacts under
symlinked temporary directories stay confined, skip stop requests to producers
whose Unix-domain sockets have already half-closed, and request the canonical
desktop target that Storybook's embedded driver registers for Fabric and Paper
smoke tests. macOS RN Test App sessions without explicit identity now launch
the project's exact built product instead of any Launch Services copy sharing
its bundle identifier, and fail closed when its bundle identifier, renderer, or
embedded JavaScript bundle does not match. Console test labels number retried
attempts by ordinal rather than by WDIO's sparse attempt keys.
26 changes: 26 additions & 0 deletions .changeset/neutral-desktop-harness.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
---
'@fluentui-react-native/desktop-test': minor
'@fluentui-react-native/desktop-driver': minor
'@fluentui-react-native/storybook-desktop': minor
'@fluentui-react-native/tester': patch
---

Add an application-neutral desktop-test harness with canonical app/suite
configuration, native lifecycle ownership, standalone WDIO/Jasmine execution,
and shared event, JSON, JUnit, console, and GitHub Actions reporting.

Make Storybook an optional integration while preserving isolated callbacks,
authenticated readiness, platform exclusions, and owned PowerShell services.
Bind native visibility/focus to existing WDIO browsers, retain delayed-render
waits, strengthen Windows attach identity, and forward trusted launch timeouts
and unpackaged working directories.

Expose authoritative UI Automation required-form state, preserving unsupported
results on other providers. Adapt native checkbox/switch reads to checked state
without changing selected semantics or legacy Appium behavior.

Expose the FluentTester application's canonical desktop targets for referenced
standalone suites without importing test or Storybook tooling into the app.

Legacy desktop Appium and mobile lanes remain until native semantic parity and
multi-day reliability qualification are complete.
8 changes: 5 additions & 3 deletions .github/skills/agentic-component-authoring/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -66,9 +66,11 @@ references used, the implementation order, and the validation plan.
7. Add focused tests and stories that exercise the public API and the resolved native output.
8. Reconcile and ratify the local contract against the realized public types, tests, stories, and platform evidence.
Upstream changes require explicit re-review and never overwrite the local contract.
9. Run the smallest declared validation command while iterating. Finish with package format, lint, build, and tests;
run the Storybook bundle for story changes and the root build when public types, manifests, or project references
change. Finish with `yarn clean-lage-cache` and then `yarn lage buildci` (R-VALID-003) and report results truthfully (R-VALID-002).
9. Iterate with focused validation (R-VALID-004): `yarn test <component>` from the package, `yarn build` after type
changes, and `yarn test --findRelatedTests <files>` after editing shared code. Before handover, run the package
format, lint, build, and whole test suite, the Storybook bundle for story changes, and the root build when public
types, manifests, or project references change. Then run `yarn clean-lage-cache` and `yarn lage buildci` once as
final acceptance (R-VALID-003) and report results truthfully (R-VALID-002).

Do not divide one component implementation into separate sub-agent or sub-skill phases. Its types, state, styling, and
rendering form one contract and should remain in one implementation context.
46 changes: 23 additions & 23 deletions .github/skills/agentic-storybook-development/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,31 +1,31 @@
---
name: agentic-storybook-development
description: Develop, run, bundle, or troubleshoot the agentic-components Storybook app on macOS or Windows, including CocoaPods, Xcode, Metro, Fabric, and offline builds.
description: Develop, bundle, build, or troubleshoot the agentic-components Storybook app in apps/storybook on macOS, Windows, or Win32, including app catalog configuration, Metro, CocoaPods, native projects, and renderer builds. Not for configuring or running desktop tests or changing desktop package source.
license: MIT
---

# Agentic Storybook development
# Agentic Storybook app development

Work on the native Storybook application in `apps/storybook`.
This workflow covers the `apps/storybook` consumer and its native toolchain.
For the shared Storybook integration API and CLI use
[`storybook-desktop` references](../../../packages/agentic/storybook-desktop/references/README.md);
for app identity, discovery, and diagnostics use the app's
[`agent-map.yaml`](../../../apps/storybook/agent-map.yaml) and
[`AGENTS.md`](../../../apps/storybook/AGENTS.md).

## Workflow
1. Inspect `desktop.config.mts` and the app's declared scripts; do not invent
aliases or direct native runner commands.
2. Use the package's platform recipes for prep, bundle, build, smoke, and
diagnostics. Treat Pods, workspaces, generated solutions, build directories,
and DerivedData as disposable. Fix the owning hand-authored source.
3. Reinstall/regenerate affected native dependency sources and use a clean
build after dependency or workaround changes.
4. Validate the JavaScript bundle and affected native build. Run the app's
format/lint and root validation when shared manifests or references change.
5. Finish code/configuration changes with `yarn clean-lage-cache` then
`yarn lage buildci` (R-VALID-003).

1. Read the repository `AGENTS.md`, then the compact
[agent map](../../../apps/storybook/agent-map.yaml). Read the
[Storybook instructions](../../../apps/storybook/AGENTS.md), including its native diagnostics commands, and
[README](../../../apps/storybook/README.md) only as needed for the task.
2. Inspect the Storybook `package.json` and run its declared workspace scripts; do not invent direct runner commands.
3. Use `storybook-agent` to query runtime story IDs, select stories, and sweep renderability. Reproduce the first
failure from the Storybook workspace so pnpm-linked React Native tooling resolves from the app.
4. Treat native workspaces, Pods, lockfiles, generated solutions, build directories, and DerivedData as disposable
outputs. Fix the owning manifest, Podfile, configuration, or script instead.
5. After dependency or workaround changes, regenerate the affected native dependency source and use a clean build so
stale output cannot produce a false success.
When adding a codegen-enabled workspace dependency to existing macOS Pods, the first pod install can generate its
spec without refreshing ReactCodegen's source list. If the clean build then reports a missing generated spec header,
run `pods:macos` once more before changing native configuration.
6. Validate the JavaScript bundle and the affected native build. Run Storybook format/lint and the root build when
manifests or shared package references changed. Finish with `yarn clean-lage-cache` and then `yarn lage buildci` (R-VALID-003).

Keep component API, slot, token, and rendering work in the `agentic-component-authoring` skill; use this skill for the
Storybook application and its native toolchains.
For test configuration, helper provisioning, test runs, smoke reports, or CI
lanes, use `desktop-testing`. For package source changes, use
`maintain-desktop-testing`. Component API and assertion work stays with
`agentic-component-authoring`.
37 changes: 37 additions & 0 deletions .github/skills/desktop-testing/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
---
name: desktop-testing
description: Configure, run, or troubleshoot native desktop tests using desktop-test, desktop-driver, and storybook-desktop, including app targets and suites, helpers, permissions, WDIO suites, Storybook story tests and smoke runs, reports, and CI. Not for package source changes or the Storybook app build toolchain.
license: MIT
---

# Desktop testing

Package references own commands, schemas, and troubleshooting. Read only the
matching topic; do not copy its content here.

| Task | Read |
| ---------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Add an app target or suite | [`desktop-test` configuration](../../../packages/agentic/desktop-test/references/configuration.md) |
| Run stages, suites, or inspect results | [`desktop-test` commands](../../../packages/agentic/desktop-test/references/commands.md) and [reporting](../../../packages/agentic/desktop-test/references/reporting.md) |
| Prepare a platform or provision a helper | [`desktop-test` platforms](../../../packages/agentic/desktop-test/references/platforms.md) and [`desktop-driver` helpers](../../../packages/agentic/desktop-driver/references/native-helpers.md) |
| Integrate Storybook or run callbacks | [`storybook-desktop` integration](../../../packages/agentic/storybook-desktop/references/integration.md), [commands](../../../packages/agentic/storybook-desktop/references/commands.md), and [tests](../../../packages/agentic/storybook-desktop/references/story-tests.md) |
| Fix E2E adapters or diagnose failures | [`desktop-test` WDIO suites](../../../packages/agentic/desktop-test/references/wdio-suites.md) and [lifecycle](../../../packages/agentic/desktop-test/references/lifecycle.md) |

## Workflow

1. Identify the consumer workspace; read its config and declared scripts. For
`apps/storybook`, also read `AGENTS.md` and `agent-map.yaml`.
2. Reproduce with the narrowest declared stage, suite, story, or filter.
Provision the verified helper explicitly; never guess flags or call runner
internals.
3. Do not change privacy settings without authorization or overlap interactive
desktop workloads.
4. Report failures, skips, unsupported capabilities, and incomplete work
distinctly. Skips are not passes.
5. If a published package changed, add its changeset. Finish code/config
changes with `yarn clean-lage-cache` then `yarn lage buildci`.

For package source changes or reviews, use `maintain-desktop-testing`. For the
`apps/storybook` build/toolchain, use `agentic-storybook-development`.
Component story assertions stay with `agentic-component-authoring`; v0/v1
FluentTester assertions stay with `maintain-v0-v1-component`.
3 changes: 2 additions & 1 deletion .github/skills/implement-native-component/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,8 @@ ownership and qualification rules (R-NATIVE-001 through R-NATIVE-003).
4. Implement with the TypeScript specification, codegen configuration, native props, events, commands, and registration
kept consistent. Preserve public APIs and registration names (R-NATIVE-002) and keep fork imports in platform files
(R-REPO-002).
5. Validate the affected boundary with declared scripts (R-VALID-001): package build, test, and lint; native-core
5. Validate the affected boundary with declared scripts (R-VALID-001), running focused package tests while iterating
(R-VALID-004): package build, test, and lint; native-core
`codegen:windows` when Windows specs change; native builds through the owning app, such as
`yarn storybook build --macos` or `--windows` from `apps/storybook`; and runtime evidence through Storybook smoke or
`wdio` story tests. macOS Storybook commands default to Fabric: add `--paper` to `prep`, `build`, `run`, or `smoke`
Expand Down
45 changes: 45 additions & 0 deletions .github/skills/maintain-desktop-testing/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
---
name: maintain-desktop-testing
description: Change, review, or plan source changes to desktop-driver, desktop-test, storybook-desktop, or storybook-desktop-runtime, including native helpers. Applies package invariants, documentation, native and consumer validation, and changesets.
license: MIT
---

# Maintain desktop testing packages

| Owner | Entry |
| --------------------------------------------- | ---------------------------------------------------------------------------- |
| WebDriver service, clients, helpers | [`desktop-driver`](../../../packages/agentic/desktop-driver/AGENTS.md) |
| App/suite config, lifecycle, WDIO, reporting | [`desktop-test`](../../../packages/agentic/desktop-test/AGENTS.md) |
| Storybook integration, CLI, extraction, tests | [`storybook-desktop`](../../../packages/agentic/storybook-desktop/AGENTS.md) |
| On-device bridge, Metro, theme, chrome | [`runtime`](../../../packages/agentic/storybook-desktop-runtime/AGENTS.md) |

Read the matching contributing reference from the package index.

## Mode first

- **Review/plan:** read-only. Do not implement, run write-mode formatting,
build, create changesets, launch apps, or run native contracts. Report
validation not run.
- **Implementation:** continue below.

## Implementation

1. Change the lowest package that owns the behavior; update dependent
references when needed. Preserve exact identity, fail-closed behavior,
cancellation, ownership-safe cleanup, and explicit unsupported/skip status.
Contract fixtures that spawn Node or generate specs pass values through
arguments, not spliced source (R-SCAN-002).
2. For standalone Swift/C++ helpers, read the provider README and
`native/PROTOCOL.md`; keep protocol schema and docs in sync. Apply
`implement-native-component` as a native overlay. React-module and Office
bridging-header steps do not apply to these standalone helpers.
3. Update owning references and affected README/AGENTS files in the same
change.
4. Iterate with `yarn test <name>` for the files you change (R-VALID-004), then run package format, lint, build, and
test. Native changes also need the matching-OS helper contract and affected
consumer lane; JS tests do not qualify native behavior.
5. Add a patch changeset for each changed published package. Finish with
`yarn clean-lage-cache` then `yarn lage buildci`.

When delegating, pass the package AGENTS.md and selected reference paths;
subagents do not inherit them automatically.
7 changes: 4 additions & 3 deletions .github/skills/maintain-v0-v1-component/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,9 +30,10 @@ v0 and v1 are maintenance-only (R-V0-001 and R-V1-001). A request for a new comp
editing.
5. Make the smallest change that fixes the problem. Preserve public props, types, exports and aliases, display names,
`componentRef`, token contracts, and native registration names (R-V0-002, R-V0-003, R-V1-002, R-V1-003).
6. Validate with the owning package's declared scripts (R-VALID-001): build, test, and lint, plus the framework
packages named in the recipe when framework semantics change. Review snapshot diffs before accepting them. Report
each check's outcome (R-VALID-002), and finish with `yarn clean-lage-cache` and then `yarn lage buildci` (R-VALID-003).
6. Validate with the owning package's declared scripts (R-VALID-001), narrowest first (R-VALID-004): `yarn test <component>`
while iterating, then the package's build, test, and lint, plus the framework packages named in the recipe when
framework semantics change. Review snapshot diffs before accepting them. Report each check's outcome (R-VALID-002),
and finish with one `yarn clean-lage-cache` and then `yarn lage buildci` (R-VALID-003).
7. Add a changeset for published packages (R-REPO-003).

Stop and confirm scope before migrating between frameworks, creating a component, or changing a public API. Those
Expand Down
8 changes: 5 additions & 3 deletions .github/skills/review-component/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,11 @@ license: MIT
| Framework-base pattern | [Framework-base instructions](../../../packages/framework-base/AGENTS.md) |

4. Check repository-wide rules: explicit exports (R-REPO-001), platform fork imports (R-REPO-002), changesets
(R-REPO-003), and no copied private source (R-REPO-004).
5. Inspect validation claims. Run non-mutating checks only when they add evidence; never run snapshot-update or fix
modes. Record each check as passed, failed, skipped, not run, or unsupported (R-VALID-002).
(R-REPO-003), no copied private source (R-REPO-004), and the code-scanning patterns: linear-time regular expressions
and no values spliced into executed code (R-SCAN-001, R-SCAN-002).
5. Inspect validation claims. Run non-mutating checks only when they add evidence, preferring focused tests over the
whole suite (R-VALID-004); never run snapshot-update or fix modes. Record each check as passed, failed, skipped, not
run, or unsupported (R-VALID-002).

## Output

Expand Down
Loading
Loading