Synthèse
- Repos découverts : 32
- Repos avec commits dans les dernières 24h : 1
- Repo reviewé :
impeccable (/home/ubuntu/.claude/plugins/marketplaces/impeccable)
- Total commits reviewés : 28
- Validation effectuée par le subagent : tests Node ciblés live passés (
81 tests OK)
- Limite de validation :
bun absent, donc bun run test et tests bun:test non exécutés.
Commits reviewés
sous-section
9a5d0e7 fix(live): switch live-poll to execFileSync, validate ids strictly (#124)
7e0ce5e ci: add Tessl skill review on SKILL.md changes (#74)
18fa503 fix: normalize quoted user-invocable frontmatter (#87)
04709ea security: use JSON.stringify for selector escaping in devtools panel (#93)
efedf2d Merge pull request #97 from Gujiassh/fix/community-section
f67add2 Merge pull request #120 from vinaypokharkar/feature/qoder-support
6b507e0 Release impeccable skill v3.0.5
c1e1104 Merge pull request #118 from pbakaus/feat/live-jsx-wrap-and-carbonize
1f760af fix(live): expandReplaceRange handles multi-line self-closing JSX <div />
8660d3a fix(live): wrap shape-of-output bugs from second Bugbot review
11dfad8 fix(live): CSP-meta patch+revert preserves space before self-closing /
a701ee6 fix(live): wrap preserves relative indent of multi-line picked elements
99e6837 fix(live): JSX accept/discard restores at original indent (Bugbot review)
fdb9e7c fix(live): screenshot overlay no longer flashes solid black during loading
9ec9043 fix(live): textContent disambiguation handles missing inter-element whitespace
54d9f05 fix(live): land valid TSX through wrap → preview → accept → carbonize
638af20 Document the release workflow in CLAUDE.md and AGENTS.md
5881a08 Thank @dergachoff for #113 in v3.0.4 changelog
27af49f Strip leading whitespace in release-notes markdown extraction
bf2bc55 Fold v3.0.3 changelog into v3.0.4
a923346 Add release tooling and bump CLI to 2.1.8
c812d76 feat: wire qoder into the download API allowlist
7cfa775 fix: parseFrontmatter handles CRLF line endings
9a76c7b fix: include qoder in normalizeForHash provider regex
c6ca721 docs: add Qoder to README install and supported-tools sections
4f66eb9 feat: add Qoder harness support (closes #76)
5f5e2b0 Release impeccable skill v3.0.4
54f6ccf codex in auto-review became way too autonomous - significantly harden craft/shape flows
Points critiques / risques principaux
sous-section
- Sécurité CI — critique moyen/haut :
7e0ce5e ajoute tesslio/skill-review@main avec pull-requests: write. Action tierce non pinée à un SHA/tag immuable → risque supply-chain. Recommandation : pinner à un SHA + Dependabot/Renovate.
- Sécurité release tooling — moyen :
a923346 construit plusieurs commandes shell via interpolation (git tag, gh release, branches/tags). Recommandation : valider strictement la version semver/tag et préférer execFileSync/argv.
- Supply-chain / régression lockfile — moyen :
9a5d0e7 mélange un fix sécurité live avec une grosse régénération pnpm-lock.yaml ajoutant/actualisant beaucoup de dépendances. À séparer et auditer.
- Live wrap — risque fonctionnel restant : les fallbacks “first match” quand
--text est trop court/dynamique peuvent encore modifier le mauvais sibling, surtout sur composants répétés dynamiques.
`54f6ccf` — harden craft/shape flows
sous-section
- Positif : renforce fortement les gates produit/shape/image avant mutation, limite l’autonomie excessive des agents.
- Risque : instructions très strictes peuvent bloquer des harness sans outil question structuré ou image-gen.
- Suggestion : ajouter tests snapshot de transformation provider pour éviter divergence de wording entre harnesses.
`5f5e2b0` — release skill v3.0.4
sous-section
- Positif : release cohérente avec versions/changelog.
- Risque faible : beaucoup de fichiers générés ; vérifier reproductibilité via
bun run build.
- Tests manquants : non vérifiable ici sans Bun.
`4f66eb9` — add Qoder harness support
sous-section
- Positif : intégration large : provider config, placeholders, CLI detection, docs, artefacts
.qoder.
- Risque : énorme ajout généré (
.qoder) difficile à reviewer manuellement ; le config_file: AGENTS.md mérite validation avec Qoder.
- Suggestion : ajouter test explicite provider Qoder + build snapshot minimal.
`c6ca721` — docs Qoder README
sous-section
- Positif : docs alignées avec provider.
- Risque faible : uniquement documentation.
`9a76c7b` — normalizeForHash inclut qoder
sous-section
- Positif : corrige faux positifs “update available”.
- Amélioration : centraliser la liste providers pour éviter oublis entre
PROVIDER_DIRS, regex hash, API download.
`7cfa775` — parseFrontmatter CRLF
sous-section
- Positif : vrai fix Windows ; évite double frontmatter.
- Risque : parser YAML maison reste limité.
- Tests : semble couvert par utils, mais non exécuté ici car Bun absent.
`c812d76` — Qoder download allowlist
sous-section
- Positif : API alignée avec nouveau provider + tests.
- Risque faible : mapping simple
.qoder.
`a923346` — release tooling + CLI 2.1.8
sous-section
- Positif : release script utile : dirty tree, pushed HEAD, changelog, artifacts.
- Problème sécurité/robustesse : commandes shell interpolées depuis version/branch/tag. Même si usage maintainer, valider semver et utiliser
execFileSync.
- Suggestion : tests unitaires
htmlToMarkdown, dry-run, cas changelog absent, tag existant.
`bf2bc55` — fold changelog v3.0.3 into v3.0.4
sous-section
- Positif : simplifie changelog.
- Risque faible : docs uniquement.
`27af49f` — strip leading whitespace in release notes
sous-section
- Positif : corrige rendu GitHub Release.
- Suggestion : ajouter test
htmlToMarkdown pour éviter régression.
`5881a08` — thank contributor in changelog
sous-section
- Positif : attribution.
- Risque nul : contenu public uniquement.
`638af20` — document release workflow
sous-section
- Positif : workflow release clarifié dans
CLAUDE.md/AGENTS.md.
- Risque faible : docs seulement.
`54d9f05` — valid TSX wrap → preview → accept → carbonize
sous-section
- Positif : gros fix structurel JSX/TSX : wrapper single-root, CSS template stripping, disambiguation
--text, fixture E2E.
- Bonnes pratiques : tests unitaires + fixture Vite TSX.
- Risque : logique regex/ligne fragile pour JSX complexe ; fallback first-match peut encore toucher mauvais élément dynamique.
- Suggestion : envisager parse AST JSX à moyen terme.
`9ec9043` — textContent disambiguation sans whitespace
sous-section
- Positif : corrige cas réel
textContent concaténé sans espace.
- Risque : comparaison compacte peut créer faux positifs sur textes proches.
- Tests : bon test ciblé.
`fdb9e7c` — overlay screenshot black flash
sous-section
- Positif : corrige piège
rgba(0,0,0,0) truthy ; amélioration UX visible.
- Tests : static-source guard pragmatique.
- Amélioration : idéalement exposer helper testable plutôt que test regex source.
`99e6837` — JSX accept/discard indent
sous-section
- Positif : corrige dérive d’indentation introduite par wrapper JSX interne.
- Tests : bons tests accept/discard.
- Risque faible : dépend toujours de regex ligne.
`a701ee6` — preserve relative indent
sous-section
- Positif : fix complémentaire important ; évite corruption esthétique/syntaxique des sous-éléments.
- Qualité : bonne extraction
minLeadingSpaces.
- Suggestion : couvrir tabs/mixed indentation si projets concernés.
`11dfad8` — CSP meta patch/revert whitespace
sous-section
- Positif : round-trip byte-for-byte préservé, important pour fichiers utilisateur.
- Tests : bons tests insertAfter + CSP self-closing.
- Risque faible : regex meta reste simple, mais suffisante pour cas ciblé.
`8660d3a` — wrap output shape bugs
sous-section
- Positif : corrige sentinel short-text et
endLine multi-ligne.
- Tests : deux tests bien ciblés.
- Risque : short-text fallback first-match reste dangereux mais volontaire.
`1f760af` — multi-line self-closing JSX `<div />`
sous-section
- Positif : corrige bug de corruption sérieux dans
expandReplaceRange.
- Tests : couvre sibling adjacent + self-closing multiline.
- Suggestion : parser JSX/HTML réel serait plus robuste que regex.
`c1e1104` — merge PR #118 live JSX/carbonize
sous-section
- Positif : merge cohérent des fixes live précédents.
- Risque : gros volume généré multi-provider ; vérifier build reproductible.
- Note : logique détaillée couverte dans
54d9f05 → 1f760af.
`6b507e0` — release skill v3.0.5
sous-section
- Positif : release après fixes live, version/changelog.
- Risque faible : release générée ; dépend de build non vérifié ici faute de Bun.
`f67add2` — merge Qoder support
sous-section
- Positif : intègre Qoder après fixes allowlist/hash/CRLF.
- Risque : très gros ajout généré ; préférer review source + build artifact diff.
- Note : détails dans
4f66eb9, 9a76c7b, 7cfa775, c812d76.
`efedf2d` — community section
sous-section
- Positif : README enrichi.
- Risque faible : lien Twitter non cliquable si pas URL complète ; mineur.
`04709ea` — selector escaping via JSON.stringify
sous-section
- Positif sécurité : très bon fix contre injection JS via
chrome.devtools.inspectedWindow.eval.
- Manque : aucun test ajouté pour selector malveillant.
- Suggestion : test statique ou unitaire garantissant usage
document.querySelector(${JSON.stringify(...)}).
`18fa503` — quoted user-invocable frontmatter
sous-section
- Positif : corrige coercition booléenne ciblée sans casser les strings quotées.
- Risque faible : parser YAML maison ne gère pas tous les cas d’échappement.
- Tests : ajout pertinent, mais non exécutable ici sans Bun.
`7e0ce5e` — Tessl skill review workflow
sous-section
- Positif : améliore qualité PR sur
SKILL.md.
- Problème critique : action tierce
tesslio/skill-review@main non pinée avec permission pull-requests: write.
- Suggestion : pinner à un SHA/version, limiter permissions si possible, documenter confiance/action.
`9a5d0e7` — live-poll execFileSync + strict ids
sous-section
- Positif sécurité : remplace
execSync(string) par execFileSync(argv), valide id et variantId. Très bonne correction.
- Tests : régressions shell metachar couvertes dans
live-server.test.mjs.
- Risque : lockfile massif dans même commit brouille la review et modifie la surface supply-chain.
- Suggestion : utiliser
process.execPath au lieu de 'node'; séparer lockfile en commit dédié.
Validation et limites
node --test tests/live-wrap.test.mjs tests/live-accept.test.mjs tests/live-inject.test.mjs tests/live-server.test.mjs tests/live-browser-regression.test.mjs → 81 tests OK.
bun run test impossible : bun: command not found.
tests/lib/utils.test.js non exécutable sous Node car dépend de bun:test.
Fichiers modifiés pendant la review
Aucun fichier du repo reviewé n’a été modifié. Le présent rapport a été sauvegardé dans Obsidian.