Que fait Panneau Ask ?
Un bouton « Ask » (en bas à droite) ouvre un panneau latéral sur la page : zone de saisie, sélecteur Haiku/Sonnet, réponses en streaming, questions de suivi dans un même fil, bouton Stop, et possibilité de sélectionner du texte puis cliquer sur « Ask about this » pour citer un passage. Un seul widget, deux backends choisis à l'exécution :
| Où se trouve la page | Backend | Réponses |
|---|---|---|
| artefact claude.ai | claude.use("sample"), sur le Claude du visualiseur | à partir du texte de la page |
servie par ask-open | lens serve.py (claude -p, lecture seule) | texte de la page, plus les fichiers dans --repo |
simple file:// | aucun : le bouton n'apparaît jamais | n/a |
Étapes
- Publier comme artefact :
python3 ~/.claude/skills/ask-panel/scripts/inject.py report.html(sur place, ou-o out.html), puis publier ce fichier aveccapabilities: {sample: {}}. Chargez d'abord le skillartifact-capabilities, comme pour toute capacité. - Afficher localement :
~/.claude/skills/ask-panel/scripts/ask-open report.html [--repo DIR]. Il injecte, démarre le serveur et ouvre le navigateur. Il s'exécute jusqu'à Ctrl-C, donc lancez-le en arrière-plan. Il sert uniquement ce rapport, sur son propre port. Il donne à la page ouverte la clé lens, donc n'ouvrez que des rapports de confiance avec cette commande. - Dites à l'utilisateur que la page a un bouton Ask. C'est toute la passation.
Règles
- Les questions sur la page appartiennent au panneau de la page. N'y répondez pas dans la session, et n'utilisez pas les commentaires d'artefact pour les questions/réponses (les commentaires reviennent à la session). Si une question nécessite un vrai travail (modifications de code, nouvelle investigation), c'est une nouvelle tâche, pas une question du panneau.
- L'injection est idempotente, et ignore les leçons lens (elles ont leur propre Ask).
- Le mode artefact appelle
sampleuniquement sur un clic, jamais au chargement.not_grantedet les autres codes permanents masquent le panneau. - Le texte du modèle est rendu avec des nœuds DOM uniquement, jamais en HTML.
Fichiers
assets/ask-panel.js, assets/ask-panel.css (le widget, intégré par inject.py), scripts/inject.py, scripts/ask-open. Le backend local est ~/.claude/skills/lens/scripts/serve.py ; il répond à POST /__lens/ask avec mode: "report" pour les pages qui ne sont pas des leçons lens.
Tests : node ~/.claude/skills/ask-panel/scripts/test-panel.mjs (Playwright, faux claude, pas de réseau), plus python3 ~/.claude/skills/lens/scripts/test-serve.py pour le serveur.