Ten dokument zawiera gotowe dialogi chat, które można wykorzystać jako playbook operacyjny.
Każdy dialog można wkleić 1:1 do OpenWebUI (model mcp-skills/analyze lub mcp-skills/refactor).
Kontekst działania obecnego systemu: gateway wykonuje
sync + analyze + plan artefaktów (.mcp/*)i opcjonalniecommit/push/PR.
make start
make setup-githubSprawdzenie:
curl -fsS http://localhost:9000/health
curl -fsS -H "Authorization: Bearer ${WEBUI_API_KEY:-sk-mcp-default-dev-key}" http://localhost:9000/v1/modelsGateway wspiera teraz placeholdery w formacie {{ ... }} i wykonuje dodatkowy call do gh2mcp.
Wspierany placeholder:
Repo: {{show last pushed repo from github}}
Co dzieje się pod spodem:
mcp-gatewaywykrywa template{{...}}w poluRepo.mcp-gatewaywywołujePOST /repo/last-pushednagh2mcp-agent.gh2mcp-agentużywagh repo list ... --json nameWithOwner,pushedAt,url.- Najnowsze repo (po
pushedAt) trafia do workflow jako faktycznerepo_id.
Przykład dokładnie jak w wymaganiu:
Repo: {{show last pushed repo from github}}
Branch: main
Execute: false
Push: false
Zadanie: Przygotuj etapowy plan refaktoryzacji (Etap 1/2/3), oszacuj ryzyko i quick wins.
Opcjonalnie możesz podać owner/org w tym samym placeholderze:
Gdy template {{show last pushed repo from github}} zwróci błąd 401 lub podobny, gateway automatycznie:
- Wywołuje
gh2mcp /sync/token— pobiera świeży token zgh auth token - Zapisuje token do
.envprzezenv2mcp - Ponawia wywołanie
/repo/last-pushed
Jeśli auto-recovery nie zadziała, gateway zwraca przyjazny komunikat z 3 opcjami naprawy:
- Opcja 1: Podaj token bezpośrednio w czacie:
Zapisz token github do .env: ghp_xxx... - Opcja 2: Zaloguj się przez gh CLI:
gh auth login→Pobierz token github - Opcja 3: Terminal:
env2mcp env set GITHUB_PAT ghp_xxx
Długie operacje można wykonywać w tle:
Repo: {{show last pushed repo from github}}
Branch: main
Execute: true
Push: true
async_mode: true
Zadanie: Wdróż pełną refaktoryzację.
W tym trybie:
- Gateway zwraca natychmiast
job_idi statusqueued - Workflow wykonuje się w tle (
mcp-gateway-worker) - Status można sprawdzić:
GET /jobs/{job_id} - Streaming via SSE:
GET /jobs/{job_id}/stream - Fazy:
queued→analyzing→refactoring→testing→done/failed
Repo: {{show last pushed repo from github owner=semcod}}
- Ustalić priorytety dla 3 repo.
- Wdrożyć etap 1 tylko dla najwyższego priorytetu.
Użytkownik (wiadomość 1):
Repo: demo/refactor-lab
Branch: main
Execute: false
Push: false
Zadanie: Zrób analizę repo i zaproponuj etapowy plan refaktoryzacji (Etap 1/2/3) z priorytetami i ryzykiem.
Asystent (oczekiwany typ odpowiedzi):
- JSON z
analysis.metrics,analysis.patterns,analysis.recommendations. - Krótki plan etapowy.
Użytkownik (wiadomość 2):
Repo: demo/migration-lab
Branch: main
Execute: false
Push: false
Zadanie: Zrób analizę repo i zaproponuj etapy modernizacji struktury oraz packaging.
Użytkownik (wiadomość 3):
Repo: demo/integration-lab
Branch: main
Execute: false
Push: false
Zadanie: Zrób analizę repo i zaproponuj etapy integracji users/orders oraz standaryzacji kontraktów danych.
Użytkownik (wiadomość 4):
Repo: demo/refactor-lab
Branch: main
Execute: true
Push: true
Remote: origin
Draft: true
Draft name: portfolio-stage1-refactor-lab
PR: true
PR title: MCP: portfolio stage 1 for refactor-lab
PR body: Wdrożenie etapu 1 po triage portfolio.
Test: python3 -m compileall -q .
Zadanie: Wdróż etap 1 refaktoryzacji z poprzedniej analizy, bez zmiany publicznego API.
Asystent (oczekiwany typ odpowiedzi):
execution.committed=trueexecution.tests.ok=true/falseexecution.pushed=true(jeśli testy OK i tenant pozwala)execution.pull_request.url(jeśliPR: true)
- Uporządkować migrację do nowego standardu packaging.
- Prowadzić migrację etapami, z rollback planem.
Użytkownik:
Repo: demo/migration-lab
Branch: main
Execute: false
Push: false
Zadanie: Przygotuj plan migracji z setup.py/requirements.txt do pyproject.toml. Podaj etapy, ryzyka, kryteria akceptacji i plan rollback.
Asystent (oczekiwane):
- Etap 1: przygotowanie struktury.
- Etap 2: migracja konfiguracji i zależności.
- Etap 3: walidacja/testy/regresja.
Użytkownik:
Repo: demo/migration-lab
Branch: main
Execute: true
Push: true
Remote: origin
Draft: true
Draft name: migration-stage1
PR: true
PR title: MCP: migration stage 1
PR body: Etap 1 migracji packaging i struktury.
Test: python3 -m compileall -q .
Zadanie: Wdróż etap 1 planu migracji, przygotuj repo pod pyproject.toml i opisz wpływ na CI/CD.
Użytkownik:
Kontynuuj na tym samym repo i branchu draft. Zaproponuj i wdroż Etap 2 migracji, z naciskiem na kompatybilność i minimalizację ryzyka.
- Ustalić kontrakty danych i granice odpowiedzialności.
- Zredukować coupling między modułami.
Użytkownik:
Repo: demo/integration-lab
Branch: main
Execute: false
Push: false
Zadanie: Przeanalizuj integrację users/orders i zaproponuj docelowy kontrakt danych, orchestrator oraz zasady obsługi błędów.
Użytkownik:
Repo: demo/integration-lab
Branch: main
Execute: true
Push: false
Draft: true
Draft name: integration-stage1
PR: false
Test: python3 -m compileall -q .
Zadanie: Wdróż etap 1 integracji: ujednolić kontrakty danych i wyczyścić odpowiedzialności warstwy orchestratora.
Użytkownik:
Na podstawie poprzedniego wyniku przygotuj checklistę production readiness: monitoring, obserwowalność, testy kontraktowe, scenariusze rollback.
- Wyznaczyć moduły domenowe i zależności kierunkowe.
- Przygotować roadmapę dekompozycji.
Użytkownik:
Repo: team/monolith-app
Repo URL: owner/monolith-app
Branch: main
Execute: false
Push: false
Zadanie: Zaproponuj architekturę modułową (core/api/infrastructure + moduły domenowe), z regułami zależności i planem dekompozycji na 3 etapy.
Użytkownik:
Repo: team/monolith-app
Repo URL: owner/monolith-app
Branch: main
Execute: true
Push: true
Remote: origin
Draft: true
Draft name: modularization-stage1
PR: true
PR title: MCP: modularization stage 1
PR body: Wydzielenie granic modułów i przygotowanie pod etap 2.
Test: python3 -m compileall -q .
Zadanie: Wdróż etap 1 modularyzacji bez łamania API i z zachowaniem ścieżki rollback.
Użytkownik:
Kontynuuj etap 2. Zminimalizuj coupling między modułami i dodaj mierzalne kryteria akceptacji dla etapu 3.
- Jednym dialogiem prowadzić iteracje plan -> execute -> review -> next stage.
Użytkownik:
Repo: demo/refactor-lab
Branch: main
Execute: false
Push: false
Zadanie: Zrób plan Etap 1/2/3. Po planie zatrzymaj się i czekaj na potwierdzenie wykonania.
Użytkownik (po analizie):
Wykonaj tylko Etap 1.
Execute: true
Push: false
Draft: true
Draft name: staged-rollout-etap1
PR: false
Test: python3 -m compileall -q .
Użytkownik (po review):
Kontynuuj Etap 2. Uwzględnij feedback: mniejszy zakres zmian na plik i nacisk na czytelność kontraktów.
Te komendy nie uruchamiają refaktoryzacji repo, tylko akcje systemowe gateway/gh2mcp:
Pobierz token GitHub z gh CLI
Zapisz token github do .env: ghp_xxx...
Pokaż listę repo organizacji
Ustaw organizację: semcod
Szablon repo (auto-resolve przez gh2mcp):
Repo: {{pokaż ostatnie repo z github}}
Branch: main
Execute: false
Zadanie: Zaproponuj plan refaktoryzacji.
- Najpierw
Execute: false, potem dopieroExecute: true. - Przy
Push: truezawsze ustawDraft: truei sensownyDraft name. - Dla większych zmian używaj etapów (1/2/3), nie jednego dużego kroku.
- Każdy etap kończ
Test:i krótką walidacją wyniku. - Jeśli wynik jest zbyt szeroki, kolejną wiadomością zawężaj zakres (
tylko moduł X,bez zmian API).
Skrypt automatyzuje najczęstszy przepływ bez ręcznego wpisywania promptów w czacie:
# 1) analyze-only: pokaż top-10 repo i zaproponuj plan etapowy
bash scripts/refactor-last-repo.sh
# 2) analyze + execute + push + PR
bash scripts/refactor-last-repo.sh --execute --push --pr
# 3) konkretne repo i zadanie
bash scripts/refactor-last-repo.sh --repo semcod/mcp --execute --task "Etap 2 gateway"Wyniki zapisywane do output/refactor-last-repo-<timestamp>/.
Więcej opcji: bash scripts/refactor-last-repo.sh --help lub docs/USAGE.md → Scenariusz 10.
Pobierz token github
- źródło:
gh2mcp(gh auth token) - zapis:
.envprzezenv2mcp
Zapisz token github do .env: ghp_xxx...
- zapis bezpośredni:
env2mcpdoGITHUB_PAT
Ustaw organizacje github: semcod
- zapisuje
GITHUB_ORG=semcod
Pokaz liste wszystkich organizacji
- wywołuje
gh2mcp /org/listi zwraca org + repo
pokaż ostatnio edytowane repo na github
- wywołuje
gh2mcp /repo/recenti zwraca 10 ostatnio pushowanych repo (user + orgi)
pokaż ostatnie 5 repo na github
- jak wyżej, limit wyciągany z treści wiadomości (domyślnie 10, max 30)
show last 5 repos on github
- angielski wariant tej samej komendy
Repo: {{show last pushed repo from github owner=semcod}}
Branch: main
Execute: false
Zadanie: Zaproponuj kolejne etapy refaktoryzacji.
- automatycznie rozwiązuje ostatnio wypchnięte repo przez
gh2mcp /repo/last-pushed
Repo: {{show last pushed repo from github}}
Branch: main
Execute: false
Push: false
Zadanie: Zaproponuj Etap 1/2/3 refaktoryzacji i wskaż szybkie wygrane.
Repo: {{show last pushed repo from github}}
Branch: main
Execute: true
Push: false
Draft: true
Draft name: etap1-last-repo
PR: false
Test: python3 -m compileall -q .
Zadanie: Wdróż tylko Etap 1 z poprzedniego planu.
Repo: {{show last pushed repo from github owner=semcod}}
Branch: main
Execute: true
Push: true
Remote: origin
Draft: true
Draft name: refactor-stage2
PR: true
PR title: MCP: refactor stage 2
PR body: Kontynuacja etapowej refaktoryzacji z playbooka.
Test: python3 -m compileall -q .
Zadanie: Wdróż Etap 2 i przygotuj repo do review.
Gdy GitHub zwróci błąd 401 przy template resolution:
Repo: {{show last pushed repo from github}}
Branch: main
Execute: false
Zadanie: Przygotuj plan refaktoryzacji.
Gateway automatycznie próbuje odświeżyć token i ponowić żądanie. Jeśli to nie pomoże, zwróci instrukcję z 3 opcjami naprawy:
Zapisz token github do .env: ghp_xxx...— bezpośredni zapisgh auth login→Pobierz token github— CLI auth + syncenv2mcp env set GITHUB_PAT ghp_xxx— terminal
Dla operacji trwających >30s (duże repo, złożona analiza):
Repo: {{show last pushed repo from github}}
Branch: main
Execute: true
Push: true
PR: true
async_mode: true
Zadanie: Wykonaj pełną refaktoryzację z migracją do nowej architektury.
Sprawdzenie statusu:
curl -sS -H 'Authorization: Bearer sk-mcp-default-dev-key' \
http://localhost:9000/jobs/job-abc123Streaming statusu (SSE):
curl -N -H 'Authorization: Bearer sk-mcp-default-dev-key' \
http://localhost:9000/jobs/job-abc123/streamFazy:
queued→analyzing→refactoring→testing→done/failed
Gateway rozpoznaje intencję typu „uruchom narzędzie X na repo Y" i kieruje ją
do mcp-skills/tools/run, który:
- Klonuje repo jeżeli nie jest jeszcze sklonowane (
git clone --depth 1). - Instaluje narzędzie jeżeli go brakuje (
pip install <pkg>). - Uruchamia narzędzie w katalogu repo z domyślnymi argumentami.
- Zwraca
stdout,stderroraz kluczowe pliki wyjściowe (np.SUMD.md,redsl_refactor_plan.md,code2llm_output/map.toon.yaml,pyqual.yaml), które są od razu renderowane w okienku chat.
Wspierane narzędzia (wszystkie z ekosystemu semcod):
sumd— generowanieSUMD.md/SUMR.mdcode2llm— analiza statyczna + call-graph (TOON)code2docs— auto-dokumentacja projektucode2logic— ekstrakcja logiki biznesowejcode2schema— wyprowadzanie schematów (JSON/SQL/OpenAPI)redsl— plan refaktoryzacjiredup— duplikaty kodupyqual— ocena jakości Pythondomd— audyt dokumentacji Markdownvallm,regix,regres,clickmd,algitex
Wklej w OpenWebUI (dowolny model mcp-skills/*):
wygeneruj sumd dla https://github.com/tom-sapletta-com/mcp-demo-integration-lab
Co dzieje się pod spodem:
mcp-gatewayparsuje wiadomość i wykrywatool=sumd,repo_url=https://github.com/tom-sapletta-com/mcp-demo-integration-lab.- Gateway wywołuje
POST /tools/runnamcp-skillsz payloadem:{"tool": "sumd", "repo_id": "tom-sapletta-com/mcp-demo-integration-lab", "repo_url": "https://github.com/tom-sapletta-com/mcp-demo-integration-lab", "auto_install": true} mcp-skills:- klonuje repo do
/repos/tom-sapletta-com/mcp-demo-integration-lab, - w razie potrzeby
pip install sumd, - uruchamia
sumd scan .w katalogu repo.
- klonuje repo do
- Gateway renderuje w chacie: status, komendę,
stdoutoraz treśćSUMD.mdosadzoną jako fenced block.
uruchom code2llm na https://github.com/owner/repo
run redsl on https://github.com/owner/repo
przeanalizuj redup dla owner/repo
code2docs dla https://github.com/owner/repo
curl -fsS http://localhost:8080/tools/run \
-H "Content-Type: application/json" \
-d '{
"tool": "sumd",
"repo_url": "https://github.com/tom-sapletta-com/mcp-demo-integration-lab"
}' | jq .Lista dostępnych narzędzi:
curl -fsS http://localhost:8080/tools/list | jq '.tools[] | {tool, description}'| Funkcja | Opis | Endpoint/Prompt |
|---|---|---|
| Repo template | Auto-resolve {{show last pushed repo from github}} |
Repo: {{...}} |
| Repo URL override | Ręczne repo_url ma wyższy priorytet | Repo URL: https://... |
| GitHub auth auto-recovery | Auto-sync tokenu przy 401 + 3 opcje naprawy | Automatyczne |
| Async mode | Background jobs via Redis/RQ | async_mode: true |
| Job streaming | SSE status updates | GET /jobs/{id}/stream |
| Copy/OpenWebUI buttons | Przyciski na blokach <pre> w docs |
http://localhost:8093 |
| Tool NLP routing | wygeneruj sumd dla <URL> → klon+instal+run |
mcp-skills/tools/run |