Powerred Apps

🇧🇷 Português
O que é
Powerred Apps é uma extensão stand-alone para VS Code que funciona como plataforma de apps first-party expostos ao chat LLM (Agent Mode). Cada app implementa a interface AppContract e é registrado automaticamente como ferramenta LM.
Toda app inclui obrigatoriamente uma skill (SKILL.md) que é implantada em ~/.copilot/skills/<id>/ na ativação da extensão, permitindo que o Copilot descubra e utilize as capacidades de cada app.
Arquitetura
flowchart LR
User["User Chat"] --> LLM["VS Code LLM (Agent Mode)"]
LLM --> Ext["powerred-apps extension"]
Ext --> Registry["AppRegistry"]
Ext --> Deployer["SkillDeployer"]
Registry --> App1["App 1 (lm-tool)"]
Registry --> App2["App N (lm-tool / mcp)"]
Deployer --> Skills["~/.copilot/skills/<id>/SKILL.md"]
Instalação
Quando publicado, instale diretamente pelo VS Code Marketplace. Por enquanto, gere o VSIX local:
npm run package
# Instale via: code --install-extension dist/powerred-apps-0.4.0.vsix
Apps
Confluence (Cloud)
O app Confluence permite que o Copilot leia, crie e edite páginas e rascunhos no Confluence Cloud diretamente pelo chat.
Autenticação:
- Execute o comando
Powerred Apps: Configure Confluence na paleta de comandos.
- Informe a Base URL do seu site (ex.:
https://seu-site.atlassian.net).
- Informe o e-mail da conta Atlassian.
- Informe um API Token gerado em https://id.atlassian.com/manage/api-tokens.
As credenciais são armazenadas com segurança via vscode.SecretStorage.
Ferramentas (15):
| Ferramenta |
Descrição |
confluence_get_page |
Obtém uma página por ID (ADF ou storage). |
confluence_search |
Busca páginas via CQL (API v1). Aceita filtro status opcional. |
confluence_create_page |
Cria uma nova página (publicada ou rascunho). |
confluence_update_page_full |
Atualização completa do corpo da página. |
confluence_update_page_smart |
Atualização parcial via ADF Smart Merge (replaceNode / appendAfter). |
confluence_create_draft |
Cria um rascunho (não publicado). |
confluence_update_draft |
Atualiza um rascunho existente. |
confluence_get_draft |
Obtém a versão rascunho de uma página. |
confluence_publish_draft |
Publica um rascunho (draft → current). |
confluence_discard_draft |
Descarta permanentemente um rascunho (com confirmação modal). |
confluence_list_drafts |
Lista os rascunhos do usuário atual. |
confluence_list_recents |
Lista páginas abertas recentemente (rastreamento local). |
confluence_list_favorites |
Lista páginas favoritadas pelo usuário. |
confluence_toggle_favorite |
Marca/desmarca uma página como favorita. |
confluence_clear_recents |
Limpa a lista de recentes. |
📖 Detalhes adicionais:
Roadmap: suporte a Data Center e ferramentas adicionais (comentários, anexos, espaços) estão previstos para versões futuras.
Como criar um novo app
- Crie a pasta
src/apps/<id>/ com um index.ts exportando:
import { AppContract } from '../../core/app-contract';
export const app: AppContract = { id: '<id>', kind: 'lm-tool', skillPath: 'resources/apps/<id>/SKILL.md', register(ctx) { /* ... */ return { dispose() {} }; } };
- Crie
resources/apps/<id>/SKILL.md com frontmatter name e description.
- Em
src/apps/index.ts, adicione o import e inclua no array apps:
import { app as myApp } from './<id>';
export const apps: AppContract[] = [myApp];
- Valide com
npm test && npm run package.
Desenvolvimento
npm install
npm run compile # type-check
npm run lint # eslint
npm test # vitest
npm run build # esbuild dev
npm run package # gera .vsix
Publicar
- Adicione
VSCE_PAT nos GitHub Secrets do repositório.
- Crie a tag e envie:
git tag v0.4.0 && git push origin v0.4.0
O workflow CI dispara automaticamente o job publish.
A extensão adiciona um ícone Powerred Apps na Activity Bar (🚀 foguete) com um painel lateral dedicado:
Painel Confluence
- Status de autenticação — indica se as credenciais Confluence estão configuradas.
- Ações rápidas — botões Configurar, Nova página e Novo rascunho.
- Recentes — últimas 20 páginas abertas (MRU), com botão Limpar. Persistido via
globalState.
- Favoritos — marque/desmarque qualquer página com estrela; persistido via
globalState.
- Meus rascunhos — lista os rascunhos do usuário atual.
- Busca CQL — pesquise páginas Confluence por palavra-chave. Clicar em qualquer resultado abre no navegador e adiciona aos Recentes.
Paleta de comandos:
| Comando |
Descrição |
Powerred Apps: Clear Confluence Recents |
Limpa a lista de recentes do sidebar. |
O app Confluence é 100% controlável via LLM — todas as operações disponíveis no sidebar também possuem um tool equivalente. São 15 ferramentas LM organizadas em 4 categorias:
| Categoria |
Tools |
| Páginas (4) |
confluence_get_page, confluence_create_page, confluence_update_page_full, confluence_update_page_smart |
| Rascunhos (5) |
confluence_create_draft, confluence_update_draft, confluence_get_draft, confluence_publish_draft, confluence_discard_draft |
| Busca (1) |
confluence_search (CQL, com filtro status: draft/current/archived/any) |
| Sidebar (5) |
confluence_list_drafts, confluence_list_recents, confluence_list_favorites, confluence_toggle_favorite, confluence_clear_recents |
📂 Documentação completa em docs/.
🇺🇸 English
What is it
Powerred Apps is a stand-alone VS Code extension that serves as a platform for first-party apps exposed to the LLM chat (Agent Mode). Each app implements the AppContract interface and is automatically registered as an LM tool.
Every app must include a skill (SKILL.md) deployed to ~/.copilot/skills/<id>/ on extension activation, allowing Copilot to discover and use each app's capabilities.
Architecture
flowchart LR
User["User Chat"] --> LLM["VS Code LLM (Agent Mode)"]
LLM --> Ext["powerred-apps extension"]
Ext --> Registry["AppRegistry"]
Ext --> Deployer["SkillDeployer"]
Registry --> App1["App 1 (lm-tool)"]
Registry --> App2["App N (lm-tool / mcp)"]
Deployer --> Skills["~/.copilot/skills/<id>/SKILL.md"]
Installation
Once published, install directly from the VS Code Marketplace. For now, build the VSIX locally:
npm run package
# Install via: code --install-extension dist/powerred-apps-0.4.0.vsix
Apps
Confluence (Cloud)
The Confluence app lets Copilot read, create, and edit pages and drafts on Confluence Cloud directly from chat.
Authentication:
- Run the
Powerred Apps: Configure Confluence command from the Command Palette.
- Enter your site Base URL (e.g.,
https://your-site.atlassian.net).
- Enter your Atlassian account email.
- Enter an API Token generated at https://id.atlassian.com/manage/api-tokens.
Credentials are stored securely via vscode.SecretStorage.
Tools (15):
| Tool |
Description |
confluence_get_page |
Retrieve a page by ID (ADF or storage format). |
confluence_search |
Search pages via CQL (v1 API). Accepts optional status filter. |
confluence_create_page |
Create a new page (published or draft). |
confluence_update_page_full |
Full-body page update. |
confluence_update_page_smart |
Partial update via ADF Smart Merge (replaceNode / appendAfter). |
confluence_create_draft |
Create an unpublished draft. |
confluence_update_draft |
Update an existing draft. |
confluence_get_draft |
Retrieve the draft version of a page. |
confluence_publish_draft |
Publish a draft (draft → current). |
confluence_discard_draft |
Permanently discard a draft (with modal confirmation). |
confluence_list_drafts |
List the current user's draft pages. |
confluence_list_recents |
List recently opened pages (locally tracked). |
confluence_list_favorites |
List the user's favorite pages. |
confluence_toggle_favorite |
Toggle a page's favorite status. |
confluence_clear_recents |
Clear the recents list. |
📖 Additional details:
Roadmap: DC support and additional tools (comments, attachments, spaces) coming in future versions.
How to create a new app
- Create
src/apps/<id>/ with an index.ts exporting:
import { AppContract } from '../../core/app-contract';
export const app: AppContract = { id: '<id>', kind: 'lm-tool', skillPath: 'resources/apps/<id>/SKILL.md', register(ctx) { /* ... */ return { dispose() {} }; } };
- Create
resources/apps/<id>/SKILL.md with name and description frontmatter.
- In
src/apps/index.ts, add the import and include in the apps array:
import { app as myApp } from './<id>';
export const apps: AppContract[] = [myApp];
- Validate with
npm test && npm run package.
Development
npm install
npm run compile # type-check
npm run lint # eslint
npm test # vitest
npm run build # esbuild dev
npm run package # build .vsix
Publishing
- Add
VSCE_PAT to the repository's GitHub Secrets.
- Create and push the tag:
git tag v0.4.0 && git push origin v0.4.0
The CI workflow automatically triggers the publish job.
The extension adds a Powerred Apps Activity Bar icon (🚀 rocket) with a dedicated sidebar:
Confluence Panel
- Auth status — shows whether Confluence credentials are configured.
- Quick actions — Configure, New page, New draft buttons.
- Recents — last 20 opened pages (MRU), with a Clear button. Persisted via
globalState.
- Favorites — star-toggle any page; persisted via
globalState.
- My drafts — lists the current user's draft pages.
- CQL search — search Confluence pages by keyword. Clicking any result opens it in the browser and adds it to Recents.
Command Palette:
| Command |
Description |
Powerred Apps: Clear Confluence Recents |
Clears the sidebar recents list. |
The Confluence app is 100% LLM-controllable — every operation available in the sidebar also has an equivalent LM tool. There are 15 LM tools organized into 4 categories:
| Category |
Tools |
| Pages (4) |
confluence_get_page, confluence_create_page, confluence_update_page_full, confluence_update_page_smart |
| Drafts (5) |
confluence_create_draft, confluence_update_draft, confluence_get_draft, confluence_publish_draft, confluence_discard_draft |
| Search (1) |
confluence_search (CQL, with status filter: draft/current/archived/any) |
| Sidebar (5) |
confluence_list_drafts, confluence_list_recents, confluence_list_favorites, confluence_toggle_favorite, confluence_clear_recents |
📂 Full documentation at docs/.