Commit Graph

314 Commits

Author SHA1 Message Date
semantic-release-bot 5a39da1cbf chore(release): code-review-v2.0.0 [skip ci] code-review-v2.0.0 2026-05-14 16:13:10 +00:00
semantic-release-bot 0ad01b5a1b chore(release): building-blocks-v2.0.0 [skip ci] building-blocks-v2.0.0 2026-05-14 16:11:21 +00:00
semantic-release-bot 8f80befe83 chore(release): analyze-and-plan-v2.0.0 [skip ci] analyze-and-plan-v2.0.0 2026-05-14 16:09:04 +00:00
Sean Steimer fdc294a67c Merge pull request #104 from adobe/fix/eds-register-missing-skills
fix(aem-eds): clean up tile to clear all lint warnings
2026-05-14 09:08:40 -07:00
Paolo Mottadelli 1ab6833f1e fix(stardust): make migrate output genuinely zip-and-deploy portable (#133)
* fix(stardust): make migrate output genuinely zip-and-deploy portable

The 0.7.0 contract claimed "self-contained, zip-and-deploy" but
emitted root-absolute paths (/assets/..., /beers/) plus
directory-only nav links. Those work on a webserver at the host
root only — they 404 on file:// and at any subpath. This PR
delivers what the claim promised:

- Output path is URL-literal: /beers/ -> beers/index.html,
  /about-us/history.html -> about-us/history.html. No more
  synthesizing /about/index.html from a slug.
- Page map (state.json.migrate.pageMap[]) built once per run;
  per-page rendering and internal-link rewriting both consume it.
- Reference shape is depth-aware relative: prefix is ./ for
  depth-0 pages, ../ * depth otherwise. Works on file://, at
  host root, and at any subpath without rewriting.
- Phase 3 broadens the self-containment check into a full
  portability audit: refuses absolute internal refs, refuses
  directory-only nav, runs the new pageMap + file:// fixtures.
- New fixtures: file-protocol-audit.mjs (Playwright file://
  round-trip) and pagemap-audit.mjs (static pageMap consistency).
- asset-bundling.md and migrate-output-format.md aligned to the
  new depth-aware-relative shape; state.json contract gains
  pageMap[].

Plugin bumped 0.7.0 -> 0.7.1.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* review: fix four flagged correctness issues

- Directory-only-nav regex now catches `./beers/` (the cited example).
  Old pattern required a-z as first char; `./beers/` starts with `.`
  and would have slipped through. New pattern accepts ./, ../, /, or a
  bare segment, and excludes scheme-bearing URLs (no false positive
  on https://google.com/).
- Add a second grep for absolute url() references inside inline style
  attrs and <style> blocks (and CSS files); the original href/src grep
  missed these.
- SKILL.md Outputs row no longer claims the sidecar lives at
  <source-url-path>/_meta.json (nonsense for .html-leaf pages).
  Replaced with a row that points at the canonical sidecar rule.
- migration-procedure.md § Page map now explicitly says same-origin
  absolute URLs are stripped to their path portion before pageMap
  lookup (per content-preservation.md § Internal link rewriting),
  closing the loophole that would let <a href="https://origin/foo/">
  pass through verbatim.

Regex patterns verified against a test fixture before commit.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* review: update migrate-self-contained-bundle eval to 0.7.1 contract

The eval was pinned to 0.7.0's root-relative /assets/<subpath>
shape. This PR's contract change to depth-aware relative paths
would have made the eval fail against correct 0.7.1 output.

- detection_src_href criterion now asserts <prefix>assets/<subpath>
  (not /assets/<subpath>).
- Renamed prefix_resolution_root_relative -> prefix_normalises_authoring;
  description flipped from "reference is left as-is" to "authoring
  is normalised to the depth-aware emit form".
- Added 4 new criteria: depth_aware_paths (6pts),
  pagemap_constructed (6pts), internal_links_via_pagemap (5pts),
  portability_audit_passes (13pts).
- Setup uses real source URLs that exercise the URL-literal rule:
  /, /beers/, /about/history.html (preserve .html leaf),
  /docs/api/ (depth-2 nested).
- Prototype HTML now carries internal nav in three authoring styles
  (root-absolute, same-origin absolute, directory-only) plus a
  broken-link case, exercising the page map rewrite.
- Run 1 expected behavior rewritten to expect depth-aware emission
  ('./assets/...'), pageMap built before render, broken-link
  flagging, and the 6-step portability audit passing.
- Run 4 (cross-page dedup) updated so the second page emits its
  shared asset with its own '../' prefix while the underlying file
  on disk is a single copy.
- Weights re-balanced to sum to 100; portability_audit_passes gets
  the largest weight (13pts) since it backs the contract claim.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-14 03:29:23 -07:00
Paolo Mottadelli 27dd06341c feat(stardust): migrate produces self-contained zip-and-deploy bundle (#132)
* feat(stardust): migrate produces self-contained zip-and-deploy bundle

Bundles every referenced asset into stardust/migrated/assets/ and
rewrites HTML/CSS references to root-relative /assets/<subpath> so
the migrated tree is fully self-contained. Adds asset-bundling
reference (six detection shapes, nine edge cases), output-format
contract with state.json.migrate block (selfContained: true),
--clean and --pin-timestamp flags, and an eval covering the six
acceptance criteria.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* review: fix count, --clean correctness, document asset-missing rename

- Bump totalAssetsBundled 6 → 7 in eval task.md (matched bundledAssets[] length).
- --clean now implies --force so the bundledAssets Set is the complete
  union across every page; idempotent-skipped pages' assets are no
  longer at risk of being deleted as stale. Updated SKILL.md flag
  description, asset-bundling.md § Stale asset cleanup, the
  Idempotent-skip interaction note, and the eval's run-3 expected
  behaviour + criterion.
- Document the contentDeviations / migrationDecisions kind rename
  from "media-missing" to "asset-missing" in
  migrate-output-format.md § Backwards compatibility — consumers
  should accept either string until they migrate.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* chore(stardust): bump plugin version 0.6.0 → 0.7.0

Self-contained zip-and-deploy bundle is a minor-version addition:
new --clean and --pin-timestamp flags, new state.json migrate
block (forward-compat), new asset-bundling reference contract,
provenance kind rename (media-missing → asset-missing).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* chore(stardust): bump palette library version v0.6.0 → v0.7.0

Keep the palette library version aligned with the plugin version.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-13 12:32:30 -07:00
Paolo Mottadelli bfe537dbdd feat(stardust): ia-fidelity axis + 10 non-slop disciplines + approval fold-back (#131)
Coordinated three-part change: Part I adds a strategic ia-fidelity
axis pinned at direct time (verbatim → A1/A2/A3 surface forks vs
reimagined → A+B+C role-differentiated). Part II adds 10 disciplines
at three phase boundaries (brief-time 1-5, craft-time 6-8, quality
gates 9 + convergence detector 10) with the four wasatch dry-run
friction carve-outs folded in. Part III lands Phase 5 approval
fold-back (site-wide / page-local / don't-fold) with verbatim no-op
gating. Also sweeps remaining Phase 5.5 → 2.7 references across the
plugin docs.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-13 09:44:12 -07:00
Himani Chauhan 52e83b770b feat(migration): align skill with updated MCP tool names and empty-pattern result handling
feat(migration): align skill with updated MCP tool names and empty-pattern result handling
2026-05-13 16:13:48 +05:30
Akanksha Jain 1c93e5418e fix(aem-workflow): correct workflow-model-design XML format and step resourceTypes (AEMaaCS) (#123)
* fix(aem-workflow): correct workflow-model-design XML format for /conf design-time (AEMaaCS)

The cloud-service workflow-model-design skill incorrectly showed
cq:WorkflowModel / cq:WorkflowNode / cq:WorkflowTransition (runtime
/var format) under the /conf design-time path. The Workflow Model
Editor expects cq:Page + jcr:content/flow/<step-component> with
nt:unstructured step nodes and sling:resourceType identifiers.
A developer following the previous content would deploy a model the
editor cannot open and Sync cannot process.

Verified against AEM Cloud Service SDK localhost:4517 OOTB models at
/libs/settings/workflow/models/ and source at com.adobe.granite.workflow
on master branch.

- model-xml-reference.md: full rewrite to cq:Page + flow/parsys
  format; design-time vs runtime table; cq:template fix to
  /libs/cq/workflow/templates/model; rewritten pitfalls section;
  runtime /var shape documented for reference
- step-types-catalog.md: every step snippet converted to
  nt:unstructured + sling:resourceType; sling:resourceType reference
  table added; initiatorparticipant documented; transition XML
  removed (Sync derives transitions from step order)
- model-design-patterns.md: Pattern 5 Task Manager XML corrected to
  flow-layer format; Pattern 6 variables annotated as runtime-only
- SKILL.md: Sync verification added to checklist; /conf-only on
  AEMaaCS distinction (no /etc legacy auto-deploy); filter.xml
  guidance updated

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* fix(aem-workflow): correct AND_SPLIT/AND_JOIN/END resourceTypes in workflow-model-design (AEMaaCS)

The cloud-service step-types-catalog listed sling:resourceType values
for AND_SPLIT, AND_JOIN, and END that do not exist as design-time
components on AEM Cloud Service. Verified against
/libs/cq/workflow/components/model/ on localhost:4517.

- sling:resourceType table: AND_split -> and (actual OOTB component
  is named `and`, not `AND_split`); AND_join and end rows removed
  (no such components exist)
- AND_SPLIT example: corrected sling:resourceType to
  cq/workflow/components/model/and; AND_JOIN inline example removed
- AND_JOIN section: replaced manual <synchronize> example with note
  that AEM Sync derives AND_JOIN nodes automatically at /var
- END Node section: replaced manual <workflowend> example with note
  that Sync derives both START and END automatically

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-13 15:41:35 +05:30
Himani Chauhan 69e8446df3 feat(migration): rename MCP tool and add fetch-by-importance tool docs
Align with the updated MCP server which split fetch-cam-bpa-findings
into two purpose-specific tools:

- fetch-cam-bpa-findings-by-pattern: code-transformer pattern flows
  (scheduler, assetApi, eventListener, resourceChangeListener, eventHandler)
- fetch-cam-bpa-findings-by-importance: returns authoritative _COUNT_
  rollup rows at one importance level (CRITICAL/MAJOR/ADVISORY/INFO),
  sorted by descending count — for open-ended "what are the critical
  findings?" requests

Changes:
- cam-mcp.md: rename all references; add full Tool section for
  fetch-cam-bpa-findings-by-importance (request, response shape,
  backend endpoint, error response note)
- SKILL.md: update CAM via MCP summary and batching section to name
  both tools with their respective use cases

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-13 15:35:07 +05:30
Himani Chauhan bdc9706526 feat(migration): handle empty-pattern BPA results from updated MCP tool
The MCP cam-bpa-fetcher now returns success:true with an empty targets
array and a message field when a specific pattern has no findings in the
latest BPA report, instead of success:false with a misleading "upload
BPA report" suggestion.

Align the skills layer:
- BpaResult gains a message field (unified-collection-reader.js)
- bpa-findings-helper caches and propagates mcp.message so callers see
  "No 'scheduler' findings in the latest BPA report for project X"
  rather than the generic cache message when targets are empty
- cam-mcp.md documents the new message field on the success response
  and splits the empty-targets behavior table row into the two distinct
  cases (success:true specific-pattern vs success:false all-pattern)
- New test verifies message propagation, cache write, and no re-fetch

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-13 15:35:07 +05:30
Paolo Mottadelli 5d47099881 feat(stardust)!: sweep — drop doctor, fossils, opt-out flags, live integration
* feat(stardust)!: sweep — drop doctor.md, F-NNN fossils, opt-out flags, live integration

Four related cleanups bundled. Each independently small; together
they shrink the docs by ~600 lines and remove three doc-rot
patterns at once.

1. Delete doctor.md (493-line spec for an unimplemented script).
   The Festool-incident concerns it was scoped to are now handled
   by concrete write-time contracts (validateProvenance, content-
   sourcing hierarchy, anti-toolbox audit). No external references.

2. Drop F-NNN feedback fossils + version-changelog paragraphs.
   STARDUST-FEEDBACK.md doesn't exist in the plugin; the F-001 /
   F-002 / F-009 / F-015 / F-016 / F-018 citations were opaque
   tribal vocabulary. Kept the rules they cited; dropped the
   IDs. divergence-toolkit.md changelog paragraphs (v0.1 → v0.2,
   v0.4 → v0.5, v0.5 → v0.5.1) collapsed.

3. Slim flag surfaces. Every --no-* / --skip-* / --allow-* /
   --refresh-stale flag dropped from prototype and migrate; the
   underlying quality gates are now mandatory. Manual chat
   overrides ("ship as-is", "accept the P1 findings") remain
   available and are recorded in _provenance verbatim.

   prototype flags: 10 → 5 (<slug>, --all, --prep, --canon-from,
   --publish-sample).
   migrate flags: 8 → 5 (<slug>, --all, --force, --require-approved,
   --strict-canon).

4. Drop the impeccable:live integration. Live was documented as
   the "default" iteration path but wasn't used — chat-driven
   command invocation is the actual default. Phase 4 collapses
   from 6 steps to 3 (open file → mark prototyped → report).
   Iteration paths drop from 3 to 2 (chat-driven, direct
   invocation). Live remains usable as an external tool the user
   invokes directly against the proposed file; stardust no
   longer pretends to drive its poll loop.

BREAKING CHANGE: prototype no longer accepts --no-iterate,
--no-critique, --skip-adapt-audit, --adapt-variant, --no-hamburger,
--refresh-stale, or --no-impeccable. migrate no longer accepts
--refresh-stale, --allow-placeholder, or --skip-adapt-audit.
The mobile-adapt audit, content-sourcing scan, placeholder gate,
and critique + audit pass are now mandatory; manual chat overrides
replace the flag-based bypasses.

The live driver loop (Phase 4 steps 4-6: config.json setup, event
streaming, carbonize cleanup, iteratedVia: impeccable:live
provenance) is gone. The proposed file's iteratedVia provenance
now records the named impeccable commands run against the file,
not a live sessionId.

stardust bumped to 0.6.0.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* chore(stardust): sync tile.json version to plugin.json (0.6.0)

The tile manifest's version was stuck at 0.1.0 while the plugin
moved to 0.6.0. Keep them in sync so tessl-side catalog metadata
matches the marketplace.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-13 02:31:08 -07:00
Paolo Mottadelli 33dd9037f3 stardust: mobile-nav collapse + drop before/after viewer (#127)
* stardust: mobile-nav collapse pattern + drop before/after viewer

Two related changes to stardust:prototype landing together.

Mobile-nav collapse (additive):
- New stock CSS-only hamburger pattern auto-applied by Phase 5.5
  when the Mobile-adapt audit refuses at 360px (overflow,
  sub-11px nav font, or sub-10px nav gap).
- New audit conditions documented in skills/prototype/SKILL.md
  § Mobile-adapt audit; checked at runtime via the Playwright
  snippet at skills/prototype/fixtures/mobile-nav-audit.mjs.
- Stock pattern doc at skills/prototype/reference/mobile-nav-collapse.md
  carries the copy-pasteable HTML+CSS+JS, the ARIA checklist,
  the post-injection source-order check, --no-hamburger opt-out,
  and the alternative-pattern vocabulary.
- New data-nav-collapse="hamburger" attribute (v2.2 additive) on
  <header> when the pattern is applied.
- Positive + negative fixtures verify the audit end-to-end.

Drop the per-page before/after viewer:
- Phase 3 (Compose the viewer) removed; the proposed file is
  opened directly in the browser.
- Approval is now chat-only: "approve <slug>" or "approve".
- skills/prototype/reference/before-after-shell.md renamed to
  proposed-file-shell.md and stripped to the proposed-file
  contract only (viewer half, iframe resolution chain, action
  buttons, and stash mechanic all dropped).
- state-machine.md prototypePath repointed at -proposed.html;
  doctor.md D-104 pairs -proposed.html with -shape.md;
  artifact-map.md drops the <slug>.html row; publish-sample.md
  simplifies variant discovery (no more "is not the viewer"
  disambiguation); evals/prototype-before-after rewritten to
  expect a single proposed file.

BREAKING CHANGE: stardust:prototype no longer composes the
before/after viewer at stardust/prototypes/<slug>.html.
Anyone scripting on top of that file existing on disk should
switch to stardust/prototypes/<slug>-proposed.html (the
prototypePath in state.json now points there directly). The
approval gesture moves from the viewer's Approve button to a
chat-only "approve <slug>" / "approve".

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* stardust: bump version to 0.5.0

Minor bump for the breaking change in 370a208 (drop before/after
viewer; chat-only approval). Pre-1.0 semver: minor bump signals
a breaking change without claiming API stability.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-13 00:06:20 -07:00
Paolo Mottadelli 2da4f830ad stardust: fix dependencies schema to use name@marketplace string (#126)
Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-12 12:21:32 -07:00
Paolo Mottadelli 9af9da4866 Merge pull request #125 from adobe/stardust-fix-marketplace-dep
stardust: fix cross-marketplace dep reference (0.4.1)
2026-05-12 12:12:07 -07:00
Paolo Mottadelli 90be5b7bf2 stardust: fix cross-marketplace dep reference to impeccable
The `marketplace` field in plugin dependencies and the
`allowCrossMarketplaceDependenciesOn` allowlist must use the
marketplace's `name` (`impeccable`), not its GitHub repo path
(`pbakaus/impeccable`). The mismatch caused Claude Code to flag
the stardust plugin manifest as invalid on install.

Bumped to 0.4.1.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-12 21:11:48 +02:00
Paolo Mottadelli c2f73925c2 Merge pull request #124 from adobe/seed-brief
stardust: bump version to 0.4.0
2026-05-12 11:54:09 -07:00
Paolo Mottadelli 69068cee1c stardust: bump version to 0.4.0
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-12 20:53:32 +02:00
Akanksha Jain 15563e127a Feat/skill workflow model design 65 lts (#122)
* fix(aem-workflow): correct workflow-model-design XML format for /conf design-time (AEM 6.5 LTS)

The workflow-model-design skill incorrectly showed cq:WorkflowModel /
cq:WorkflowNode / cq:WorkflowTransition (runtime /var format) under the
/conf design-time path. The Workflow Model Editor expects cq:Page +
jcr:content/flow/<step-component> with nt:unstructured step nodes and
sling:resourceType identifiers. A developer following the previous
content would deploy a model the editor cannot open and Sync cannot
process.

Verified against AEM 6.5 LTS localhost:4505 OOTB models at
/libs/settings/workflow/models/ and source at
WorkflowSessionFactory.java:94 (MODELS_RUNTIME_LOCATION = "/var/workflow/models").

- model-xml-reference.md: full rewrite to cq:Page + flow/parsys
  format; design-time vs runtime table; cq:template fix to
  /libs/cq/workflow/templates/model; rewritten pitfalls section;
  runtime /var shape documented for reference
- step-types-catalog.md: every step snippet converted to
  nt:unstructured + sling:resourceType; sling:resourceType reference
  table added; initiatorparticipant documented; transition XML
  removed (Sync derives transitions from step order)
- model-design-patterns.md: Pattern 5 Task Manager XML corrected to
  flow-layer format; Pattern 6 variables annotated as runtime-only
- SKILL.md: Sync verification added to checklist; /conf vs /var
  distinction note; filter.xml guidance updated

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* fix(aem-workflow): correct AND_SPLIT/AND_JOIN/END resourceTypes in workflow-model-design (AEM 6.5 LTS)

The step-types-catalog incorrectly listed sling:resourceType values for
AND_SPLIT, AND_JOIN, and END that do not exist as design-time
components on AEM 6.5 LTS. Verified against
/libs/cq/workflow/components/model/ on localhost:4505.

- sling:resourceType table: AND_split -> and (the actual OOTB
  component is named and, not AND_split); AND_join and end rows
  removed (no such components exist)
- AND_SPLIT example: corrected sling:resourceType to
  cq/workflow/components/model/and; AND_JOIN inline example removed
- AND_JOIN section: replaced manual <synchronize> example with a note
  that AEM Sync derives AND_JOIN nodes automatically at /var
- END Node section: replaced manual <workflowend> example with a note
  that Sync derives both START and END automatically

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-12 10:44:47 +02:00
Paolo Mottadelli 48ec3970ef stardust: close open clusters + declare cross-marketplace impeccable dep (#120)
* feat(stardust): close open clusters — publish-sample URL, mobile-adapt phase, critique+audit, add-variant

Four items from the 2026-05-05 review session covering UPS F7+F9,
NVIDIA F8, and dogfood-feedback 2026-05-03-a / JFK F14. All four
shipped together because they overlap in the same SKILL files.

- publish-sample showcase URL fix (UPS F9): the printed URL pattern
  pointed at a route that doesn't exist (samples/<slug>/), so every
  published sample carried a broken link in the PR body and final
  report. Updated to the actual single-page-viewer route
  (samples/brand.html?slug=<slug>#<variantId>) and synced the upstream
  default to paolomoz/stardust-site.

- Mobile-adapt as a pipeline phase (dogfood-feedback 2026-05-03-a +
  JFK F14): new prototype Phase 5.5 runs $impeccable adapt against
  the approved variant on every approval; mobile-adapt audit at
  prototype, migrate, and publish-sample refuses files with no
  <meta viewport>, zero @media (max-width: ...) rules, or no
  mobile-targeted breakpoint at <= 640px. --skip-adapt-audit escape
  hatch threads through all three. Closes the failure mode where
  the lovesac.com showcase shipped variant B to mobile visitors with
  bracket motif crowding, overflowing trust band, and no hamburger.

- Phase 2.5 critique + audit (NVIDIA F8): renamed from "Validate via
  critique" to "Validate via critique + audit"; runs both impeccable
  validators in parallel and gates prototyped status on P0/P1 from
  either. Added brand-faithful inversion auto-dismiss against
  DESIGN.json#extensions.divergence.brand_faithful_inversions[] so
  Mode A renders don't drown the report in known false positives
  (Arial fallback flagged as overused-font, eyebrow uppercase as
  all-caps body, etc.). publish-sample's submitter checklist updated
  to cover both validators.

- direct --add-variant <name> (UPS F7): incremental variant addition
  against the existing direction without re-running Phase 1 reasoning
  or stale-flagging existing prototypes. Procedure documented; per-
  field inheritance rules table specifies what's pinned (palette,
  typography, IA-priorities), what extends (componentStyle, divergence
  inversions), and what's variant-local (narrative, voice DOs, the
  amplified-trait anchor). Fixes the workflow where variant A ships,
  user later asks for B and C, and --re-direct is too heavy.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* chore(stardust): declare cross-marketplace dependency on impeccable

Whitelist pbakaus/impeccable in marketplace.json and declare it as a
dependency in stardust's plugin.json so stardust can formally depend on
the impeccable plugin hosted in a different marketplace.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-11 20:44:58 -07:00
Lars Trieloff 7cc6b49b8e Merge pull request #118 from adobe/renovate/semantic-release-monorepo
chore(deps): update semantic-release monorepo
2026-05-11 19:13:02 +02:00
Burkhard Pauli 455675c24e Merge pull request #115 from bpauli/feat/aem-rde-skill
feat: add AEM RDE skill to aem-cloud-service plugin
2026-05-11 11:31:29 +02:00
Robert Munteanu df8be2cbdb Merge remote-tracking branch 'origin/main' into feat/aem-rde-skill 2026-05-11 10:26:50 +02:00
Abhishek Garg 962fd1dbee fix(replicate-content): condense SKILL.md to pass tessl-review (#119)
* fix(replicate-content): condense SKILL.md to pass tessl-review (#117)

Rewrites replicate-content/SKILL.md from 840 lines to ~150 lines and
adds three reference files so the skill passes the 50% tessl-review
threshold.

Changes:
- Description: add explicit "Use when..." clause and trigger terms
  (publish, unpublish, replicate, content activation, dispatcher flush,
  AEM publish instance) to improve specificity and completeness scores
- Body: condense all seven replication methods to 3-5 lines each with
  explicit ✓ Verify checkpoints; remove generic Best Practices,
  Security Considerations, and Success Criteria sections
- Split detailed walkthroughs into references/ bundle files:
  - references/TREE_ACTIVATION.md (dry-run steps, performance guidance)
  - references/PACKAGE_REPLICATION.md (full package build/replicate flow)
  - references/REPLICATION_API.md (Java API, ReplicationOptions,
    curl with error handling, service user setup)

Fixes #117

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix(replicate-content): address quality review findings

- CRITICAL: replace invalid XML service-user mapping with correct OSGi
  JSON config format (.cfg.json) in REPLICATION_API.md
- HIGH: add REVERSE to ReplicationActionType table (was missing)
- HIGH: add replication-api to Related Skills in SKILL.md
- MEDIUM: add Only Activated option to Tree Activation summary to match
  TREE_ACTIVATION.md reference file
- MEDIUM: fix head -n1 → sed '$d' in production curl script to handle
  multiline JSON responses without truncation
- MEDIUM: add brief Asset Replication (DAM) section to SKILL.md
- LOW: add Additional Resources section with official Adobe docs links

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Abhishek Garg <abhigarg+adobe@adobe.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-11 10:20:39 +02:00
renovate[bot] f0ec91a74a chore(deps): update semantic-release monorepo 2026-05-08 22:54:31 +00:00
Robert Munteanu eb78c8a148 fix(stardust): fix tile.json to pass tessl-lint (#116)
- Add missing version/summary fields and convert skill paths from strings
to objects to match the required tile.json schema.
- tessl-lint rejects colons in skill names; only lowercase letters,
numbers, and hyphens are allowed.
- Skill keys must match the name field in each SKILL.md; drop the
stardust- prefix since the SKILL.md files declare short names.

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-08 17:33:48 +02:00
Burkhard Pauli 26c2c4164f fix: address rombert and abhishekgarg18 review feedback
- Tighten aem-rde activation: explicit RDE references only; add do-not-activate guard for generic AEMaaCS phrases (cloud sandbox, dispatcher-config/frontend/env-config, push my bundle, tail the publish log) that belong to Cloud Manager pipelines
- Mark skill as beta per project conventions: [BETA] prefix in description with caveat, metadata.status: beta in frontmatter, and a beta-skill blockquote in the body
- Reflect beta status in README entry
2026-05-07 16:22:10 +02:00
Burkhard Pauli 17a795cbc1 fix: address PR review feedback
- Update aem-cloud-service plugin.json description and keywords to mention RDE for discoverability
- Add aem-rde skill section to README.md for human and AI agent discovery
- Document single-user RDE constraint in references/configuration.md
2026-05-07 09:58:34 +02:00
Pavan Kumar Gaddam 0f1ad97af8 Merge pull request #91 from pru55e11/feat/agentic-project-workspace-api-bootstrap
appbuilder-project-init: agentic Console project/workspace/API bootstrap + recent release-note alignment
2026-05-06 17:30:46 -04:00
Burkhard Pauli 01a3493b64 fix: remove unsupported user-invocable frontmatter field from aem-rde skill 2026-05-06 15:28:25 +02:00
Burkhard Pauli b40dffd4cc feat: add aem-rde skill under new aem-cloud-service plugin
Introduces a new plugin 'aem-cloud-service' to host AEMaaCS / Cloud
Manager related skills, separate from the existing
'aem-edge-delivery-services' grouping. Adds the 'aem-rde' skill which
provides expert guidance on '@adobe/aio-cli-plugin-aem-rde' commands:
deploy, inspect, log-tail, snapshot, and troubleshoot Rapid Development
Environments.
2026-05-06 15:14:40 +02:00
Sean Steimer 555cf22a00 Merge pull request #106 from adobe/ci/tessl-lint
ci: add tessl skill lint workflow
2026-05-05 13:23:45 -07:00
Paolo Mottadelli 5bb2150e37 feat(stardust): close open clusters — publish-sample URL, mobile-adapt phase, critique+audit, add-variant (#113)
Four items from the 2026-05-05 review session covering UPS F7+F9,
NVIDIA F8, and dogfood-feedback 2026-05-03-a / JFK F14. All four
shipped together because they overlap in the same SKILL files.

- publish-sample showcase URL fix (UPS F9): the printed URL pattern
  pointed at a route that doesn't exist (samples/<slug>/), so every
  published sample carried a broken link in the PR body and final
  report. Updated to the actual single-page-viewer route
  (samples/brand.html?slug=<slug>#<variantId>) and synced the upstream
  default to paolomoz/stardust-site.

- Mobile-adapt as a pipeline phase (dogfood-feedback 2026-05-03-a +
  JFK F14): new prototype Phase 5.5 runs $impeccable adapt against
  the approved variant on every approval; mobile-adapt audit at
  prototype, migrate, and publish-sample refuses files with no
  <meta viewport>, zero @media (max-width: ...) rules, or no
  mobile-targeted breakpoint at <= 640px. --skip-adapt-audit escape
  hatch threads through all three. Closes the failure mode where
  the lovesac.com showcase shipped variant B to mobile visitors with
  bracket motif crowding, overflowing trust band, and no hamburger.

- Phase 2.5 critique + audit (NVIDIA F8): renamed from "Validate via
  critique" to "Validate via critique + audit"; runs both impeccable
  validators in parallel and gates prototyped status on P0/P1 from
  either. Added brand-faithful inversion auto-dismiss against
  DESIGN.json#extensions.divergence.brand_faithful_inversions[] so
  Mode A renders don't drown the report in known false positives
  (Arial fallback flagged as overused-font, eyebrow uppercase as
  all-caps body, etc.). publish-sample's submitter checklist updated
  to cover both validators.

- direct --add-variant <name> (UPS F7): incremental variant addition
  against the existing direction without re-running Phase 1 reasoning
  or stale-flagging existing prototypes. Procedure documented; per-
  field inheritance rules table specifies what's pinned (palette,
  typography, IA-priorities), what extends (componentStyle, divergence
  inversions), and what's variant-local (narrative, voice DOs, the
  amplified-trait anchor). Fixes the workflow where variant A ships,
  user later asks for B and C, and --re-direct is too heavy.

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-05 09:00:14 +02:00
Paolo Mottadelli ed46712dde stardust: extract integrity & capture-fidelity hardening from 2026-04-29 → 2026-05-04 dogfood (#112)
* feat(stardust): provenance integrity — synthesis guard, cascade validation, full body capture

Closes a class of silent corruption where extract --prep silently
synthesized page records and the cascade ran four phases on
fabricated data before being caught by a meta-question
(2026-04-30 lovesac.com).

- extract refuses to mark a page extracted without renderedBy:"playwright"
  + fetchedAt + waitMs>0 + waitMode + httpStatus; new ProvenanceMissing
  error class; sub-agent prompts must forbid synthesis by name and return
  a per-page evidence table.
- validateProvenance(page) specced in state-machine.md; called at setup
  of direct --prep, prototype, migrate; cascade guard runs between
  prepare-migration Phase 1 and Phase 2 with explicit abort message.
- innerText captured in full — no truncation. Reference scripts must
  not slice (the v0.2 .slice(0, 4000) silently dropped most body content
  on long-form pages and broke module detection downstream).
- Schema additions for sections[].body, lists, qa, quotes so migrate can
  render real body copy under each heading instead of falling back to
  placeholder-with-signature throughout.
- Mandatory per-page evidence table in extract Phase 6 with live: yes/no
  column; Provenance: N/N live line in prep summary so the contract is
  visible at a glance.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* feat(stardust): extract reliability — Akamai headed fallback + consent pre-flight

Two unrelated context-setup gaps surfaced in 2026-05-03/04 dogfood
that silently produced bad captures.

- Bot-management fallback (UPS, ups.com/gb): Akamai rejects bundled-
  chromium-default headless on its TLS/H2 fingerprint with
  ERR_HTTP2_PROTOCOL_ERROR, before any JS runs. Recipe now specifies
  headless: false, channel: 'chrome' as the retry path; playwright-
  recipe.md gains a Bot-management fallback section, extract setup
  switches modes on the protocol error without retrying headless,
  and the in-page fetch pattern is documented for sub-resource
  fetches that need to inherit the JA3 fingerprint.

- Consent banner pre-flight (NVIDIA, nvidia.com): every page's
  screenshot was overlaid by the OneTrust banner and the voice
  table was dominated by 'Manage Settings' / 'Reject All' /
  'Accept All' once-per-page. Recipe now specifies an API-first
  dismissal (OneTrust / Cookiebot / Didomi / Osano) with selector
  fallbacks, --no-consent-dismiss opt-out, and consent.method
  recorded in _crawl-log.json. Side-effect caveat documented: the
  dismissal can activate other gated scripts (analytics, geo-IP,
  A/B) and the result may differ from a no-dismiss capture.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* feat(stardust): extract capture fidelity — fonts, icon font, CSS-bg pseudo, hero image, logo rect-filter

Five capture-fidelity gaps surfaced across the 2026-04-29 → 2026-05-04
dogfood window. Each silently produced a thinner or wrong brand surface
that downstream prototypes then rendered against.

- Logo locator step 2 (UPS): rect filter (height ≥ 32, width ≥ 40,
  top ≤ 200) + aspect filter [0.5, 3.0] + rank by proximity to 1.5
  ideal. Stops promotional icons that share the brand-name substring
  from being picked as the masthead logo.
- CSS-background hero (UPS): pseudo-element walk on ::before / ::after
  generated content, which document.querySelectorAll('*') doesn't
  reach. Performance-bounded by the prior visible-size filter.
- voice.heroImage elevation (UPS): single canonical hero per home,
  resolved by viewport-top + visible-area + aspect-ratio filters
  with explicit DOM > CSS-bg > pseudo tie-breakers. Ends downstream
  re-derivation from a 16-image list.
- Font file capture via network-intercept (JFK): every woff2/ttf/otf
  saved to assets/fonts/, recorded in _brand-extraction.json#type.files[]
  with @font-face metadata + licensing flag. Closes the gap where
  Mode A prototypes silently fall back to system-ui on private-cut
  brands.
- Icon-font detection (JFK): query [class^="icon-"] + ::before
  font-family + codepoint, build iconClass → codepoint table, save
  the font file. Closes the emoji-fallback render path on
  Chakra/Material/government sites.
- Module-detection signal priority (sliccy): explicit ranking —
  headings → CTAs → cssBackgrounds → forms → componentsByLandmark
  → innerText substring. Substring search drops to corroboration
  only; was the source of the 2026-04-29 under-detection.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-05 08:10:29 +02:00
semantic-release-bot ca72b2780c chore(release): find-test-content-v1.2.0 [skip ci] find-test-content-v1.2.0 2026-05-03 19:13:25 +00:00
semantic-release-bot 48102a7c32 chore(release): block-collection-and-party-v1.2.0 [skip ci] block-collection-and-party-v1.2.0 2026-05-03 19:12:47 +00:00
Lars Trieloff 16de1c85d7 Merge pull request #110 from adobe/renovate/jsdom-29.x-lockfile
chore(deps): update dependency jsdom to v29.1.1
2026-05-03 21:12:29 +02:00
Paolo Mottadelli 9cfed1145a feat(stardust): replace v1 with v0.3.0 (redesign on top of impeccable) (#111)
v1 (four-stage greenfield: brand → briefings → wireframes → prototype) is
preserved at tag stardust--v0.1.0. v0.3.0 is a complete refactor with a
new surface (extract → direct → prototype → migrate) and a hard runtime
dependency on impeccable.

- plugins/stardust: replace contents with v0.3.0 source from paolomoz/stardust-2
  (skills, evals, README, tile.json, plugin.json)
- plugins/stardust/.claude-plugin/plugin.json: bump to 0.3.0; add repository
  and v2-relevant keywords
- plugins/stardust/skills/*/SKILL.md: add license: Apache-2.0 to frontmatter
- .claude-plugin/marketplace.json: update stardust entry with new
  description, version, category, keywords, author, homepage, repository,
  license (mirrors adobe-for-creativity entry shape)
- plugins/stardust/README.md: status bumped to v0.3.0; v1 link repointed
  to the stardust--v0.1.0 tag

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-30 17:24:22 +02:00
renovate[bot] de187656ec chore(deps): update dependency jsdom to v29.1.1 2026-04-30 12:48:22 +00:00
njampani123 1db96203ef Merge pull request #109 from adobe/update-adobe-for-creativity-plugin-description
chore(adobe-for-creativity): update plugin description
stardust--v0.1.0
2026-04-29 13:59:52 -07:00
njampani123 ee273c1119 chore(adobe-for-creativity): bump version to 1.0.2 2026-04-29 13:58:29 -07:00
njampani123 7aa9e6c771 Update plugins/creative-cloud/adobe-for-creativity/.claude-plugin/plugin.json
Co-authored-by: solimant <solimant@users.noreply.github.com>
2026-04-29 13:56:48 -07:00
njampani123 97fa5e9576 chore(adobe-for-creativity): update plugin description 2026-04-29 13:51:35 -07:00
solimant 83398bc23c Merge pull request #103 from adobe/update-c4c-plugin-version-101
feat: Update c4c plugin version to 1.0.1
2026-04-29 04:57:49 +08:00
Sean Steimer ddeb6b0504 ci: post sticky PR comment for lint results
Posts a sticky comment to the PR Conversation tab summarizing per-tile
lint results. Comment is identified by an HTML marker and updated
in-place across pushes (Codecov-style), so a PR has at most one
tessl-lint comment regardless of push count.

Per-tile warnings are shown inside collapsible <details> blocks so the
comment stays compact. Failing tiles get a top-level error block plus
the standard ::error:: annotation, keeping the check status red.

Adds pull-requests: write permission for comment posting.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-28 13:16:25 -07:00
Sean Steimer a2b0e541bf ci: surface lint warnings as ::warning:: annotations
Promotes per-tile warning-count annotations from ::notice:: (blue ℹ️)
to ::warning:: (yellow ⚠️) so they're more visible in the PR
Conversation tab and Files Changed tab. Still doesn't fail the check —
GitHub has no "warning" check status, only success/failure/neutral.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-28 13:10:00 -07:00
Sean Steimer d9e50c26ae ci: add tessl skill lint workflow
Runs tessl skill lint on every PR and push to main, scoped to changed
tiles (parents of tile.json) following the same discovery pattern as
tessl-eval.yml. Push to main lints all tiles.

Fails CI on lint errors (non-zero exit). Lint warnings (orphan files,
oversized SKILL.md, etc.) are surfaced as GitHub Annotations and step
summary entries but do not fail the build, since they are informational
not blocking.

No TESSL_TOKEN required — lint is local validation, so it works on
fork PRs unlike eval/review.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-28 12:59:05 -07:00
Sean Steimer b48cf802a0 fix(aem-eds): align references/ with spec and silence orphan warnings
Renames resources/ to references/ across 8 skills to match the
agentskills.io spec — every other plugin in this repo and EDS's own
ue-component-model already use references/.

Converts backtick-quoted resource paths in SKILL.md to markdown links
so tessl lint sees them as reachable from manifest entrypoints,
eliminating all 17 orphan warnings. Also fixes two pre-existing broken
cross-skill references that pointed at ../page-import/resources/...
(no such directory); the actual file lives in
content-driven-development/references/.

Adds a markdown link in code-review/SKILL.md to its previously
unreferenced references/review-checklist.md.

Per Anthropic's agent skills spec, markdown links don't trigger eager
loading — Claude reads SKILL.md, sees the link, decides on demand
whether to follow it.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-28 12:57:12 -07:00
Sean Steimer 39b58a3a39 chore(aem-eds): simplify .tileignore comments
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-28 12:33:01 -07:00
Sean Steimer 511e8e3edf chore(aem-eds): add .tileignore for release artifacts
Suppresses tessl lint warnings about CHANGELOG.md and package.json
files that exist as semantic-release / semantic-release-monorepo
artifacts but are not skill content.

Negation pattern preserves package.json files under scripts/ so that
future skills shipping node script tools have their packaging metadata
bundled correctly.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-28 12:31:19 -07:00