From 90d066bb7f0691cffad5bc564b6894b87481c04f Mon Sep 17 00:00:00 2001 From: vitya Date: Thu, 7 May 2026 13:24:31 +0300 Subject: [PATCH] fix(setup-interns): clone common monorepo, not nonexistent interns-mcp repo The interns-mcp source lives inside the `OpeItcLoc03/common` monorepo (at ~/projects/.common/), not as a separate `interns-mcp` repo on Gitea. The previous commit incorrectly wrote `git clone .../interns-mcp`. Now the clone-fallback correctly: - If ~/projects/.common/.git exists but lib/interns-mcp/ is missing: git -C ~/projects/.common pull --ff-only (stale clone, needs fresh subdirs) - If ~/projects/.common/ is absent: git clone .../common.git ~/projects/.common (fresh clone of monorepo) - Added "wrong repo" to Common mistakes section - Added monorepo scope note to Out of scope section Co-Authored-By: Claude Opus 4.7 --- dist/setup-interns.skill | Bin 8091 -> 8428 bytes skills/setup-interns/SKILL.md | 33 +++++++++++++++++++++------------ 2 files changed, 21 insertions(+), 12 deletions(-) diff --git a/dist/setup-interns.skill b/dist/setup-interns.skill index 669855cf45bba2b63b8644c6eaf7c37d307cabc3..49d4fcfa05d2587feb0e2f427acdb7c714319502 100644 GIT binary patch delta 6350 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 QUOtmsA36q2AOHXW053{O?EnA( delta 6010 zcmV-=7lr8TL7P9YzXuKuYNuRFNp%zx7XScFI+M)@9DlW2ZEqXLcK*J|5IsEaj#_ZlE3R4#|y{JDZ(d(Y*C7(iAPwuWf%pfqqX51V~XN{R{G6 z$S>)0&de;A6rIQgdV%Kt}v=@$}lTxRTU< zd(lpiDu0tySy}U=r-i9yo*N;HR3y3>XOpHa&&sk35Y zXB!MfTxO-n?5;$pVv*HDF|V>3<2OxjR8lE?c7IDms7JgcWd6=|vQSR5Qb73XSU zhJ46MO|T?HB4TXkgwJE5_K;aY%S1^on^Z+#8(qYa_{=DrGc&@RXV}(!stP_gPEiRX z7e@5_mfb|Xq3GcjL{oO3v;yuvy!`3%`!|30=DRoFUjBUfU*ht|%b(tScliT8{)7kr zNqJRn9|XSm{_;OAf9AJ-c=KI%KxT?twV3Pb9D>IexDGmz zqKllS!N7f7sMo?42Bd7FUeXIN~K1mDpwOpx)q7TN*fcF zxva;!nz7D&o)xK{8?h~(WkvG}|38z-(SJ!Ko;S6mD<+ACIku8JZR9(1_wVldp(rKm z52m%Fsu?dSMhcIVppz`@OHmNQDuNqpCK2q5qe6vsHdF3S`3w`x{#&YFHAO)ZU>);H zaLZg(H{Q8y^-ZOl6;2g3HoH;nPHJ6ZntJt+6Bg7+B_ssi0gNJ1DXA4UXI4xoZhwtO zI`M@gB`Z2WY;9$n<;q%yO0#;y4MaikQjKwdA_26F8wd*!l1&PcXBU__E39oW2w<~u zG|$enZM>YQa%q{NeJPryK!9g*0a4!BzPo)7YL!f}!=%OmhT{1jjzuD|bv?nZ@;Qtv zl;#{)UQc1cm2Ma=rkK?Xu(caE#DC{(j+%BJ1R)t~1zaifEXnG8A@H`@Z6Re_IJ4Xq zSF91rA`V2{kcN9ziNmzQF|h#cVl1zH^%Ev4!n(C0vTO4ZqGnEzGC*~~WoIn|}C|X3t zHB~jMV^dExn`;4$@dyqHk+Jf68+@WwY;Sn(W3-U7Ja${Lw?YIdrxEqXWHbzgjBP-H?9b4j4_W^I+fML1NvB)N=)m_qyDN<|mq53g8Et6Y3&g40tU&_Hz9~T!{rHdI|xRFIxFUaT)?a^0MGqcu`G*v}|y{7ib#dn=p z?3`O=1-HS64WiBxak+pp7tq0f`gd_Jx^su+Mfwmkx4;zf@qfYT6I|9y_>!u2+|uYA zNMx12#8F9L@CKsqCKO=;ax>#M%!23v45sem&q%#e2{aNIJm|%PhZcn`hogT=@4M71 zK$@M^p)slZ%IOT8n*f)=>g_?yRD#Z6ZzH&w!rBS66b7M~V;T6?f_zXd&v8DsosK*T z2s#03(a>Y?(W?7O3c&1tbjJ8N8PO?96PWq$u$yWVp~kBm>&UR za?lOY<5Q6ak9AX|J)x>fvoQKc9Er%BjEf8(cCFF@6n|NTa|tQ=_yPwMqpXnCV%MHJ z3>V6*oxLMCk{eE&z)QL)rGyO@!tk3HAW_OzXNdyW88EeI)_v_Qf62rK3VTIXyiV_jm4q z0o~uZXI0v2gF{j}eF|Av4-W@tagFE?Ku5ACf~#Cnl}RJnT>zx?Arvw35e%MD&*_FmMg7hBww zlmaCn3|TC+ucfB!KiE@5b{iHaS9amlw8b%&IIqDPF2{Fxz|0;HBKCp4Sy9^&Ix%E@V6_+E_~@1+Jg(R3h^mzSiowB zHiq-wi*H3NR1IBb7+8Vy89WQnbT!u03&g|Ghi0C7h;qZl*}Hlo)u2E%6DkBYXRNiScutg1W!Z z^(UmqkI5Uy!&Q~7nky=G9qWtza(|{th&BKf6IoJl&pULJ;SMRs!pw@}C^E;+_Z=U> zpmS)GK@OQ&K;)s`5!xg1_!XcxvBGMK?3+e$J^*28+&a=|kFu!yku0+_VBZ-7yahn- z&#^D*4n%zK0`@@fxNN9nKnO252!>jZf!9!aCkJwgE_C3-J@!e^Zdh*Ukblp#W_Jlj zizpEOpTT>`@qfIsKU&`6&ypX&HeqVl_hIqgi-YHn_dklFC>D8EP@F=RcWikiAGIHA z9!{aemv;PDMDy=O*56s-`vqAe5ExD!(3AMs<2b+1{1cMs=4*hige3UZaS^a=B03g* z9Lu%|x=vcIUttg>gic#RHGhQ?&Y@2%EzCtR;EPRejU)_;MRrHmvF@e2+P3P@Icd&F zwkfq2flSv{Nn(;aM%!0nSxtcSTNDXZ;oFW?Ma?;h`mf&`xDm@+(v42Ipl%@m(E{vdP zm6Y5v-dwGa7dz20!f3?EE*uYnW5)y_7rdFPaD;n5ryNq@nJ{UP^Fb%5OLCHL%?tH= z`kcxr6U|kd|GE76@`pG7aQXe^e_#IC1Cu`};H??Ob0{>?Mt>qr(DF}cO2lw&@dURu zqPWida0M>=tc|#_g z)=ll=7#0Y}BY&0prpXA%33xqhwAlilkJFx>W_oG4sB{G`?(qaxGXfY{xv&x@T)}y) zI?Z&NjX7kF_vnj#zWXomzvs^%Jqn*ZdH($5B(~r|fmLvN^3m`5%${!F{Nm>9W*Xjn za`XAklR@yM2*>OC`;~a_J;D5ZppNF!JP`5 zoHUNq_I-IXYfAzA1!ZL%l*?iv#!Y4OT`Bvc<=x!pyE$YaB^$GOfB|sb6`RGerL{9g zR%UlJnEV$Uln-VtQg)I9HXiF-*X%sS7Q?qiNWuSS$YrJY2UU@V{og}gA;$!Cyi0b^ zgxDlLIe*er00^G0vT;T9isrQE;==K3z@amiPC zX0}U}P?dwFyGuntScmS#4d>e!lKIqg=TUTaMt|6Ib~fnQ<56&AU$pVq^0vi+IbX73 zz*fo5f%)UgDS)me0M_R*U8-^BQuh~`$wq7R>U~>%=XycBLi%qnb5^{!_R>N0CLC#d z9F99wk_$iZVP&Zb=6KAw9S^(F)~T-4Xo8Kj!3yS-V8@m;t{bu-G*NJE@FycRl^2MS zc7G{{)W%aBKol+G^qvK*CsebtcKn}ZW8Ggy*+-Y#>~Jf4N%pWlNZR9ft(#?`g?HhX zyKxO)Un;n&xOD6v!Lze(9jpu{(<~L#@4$Ip>xF+iwI2VKTG;sgVO!WssPfLVlD0gL^m>z~+EUJ8Q8@ID)geFq?w)MZq%H}_2~S9&iv zoUmF;F9v@T2+>;(?ClDABHGrO_JN>Y9>xtk>g^qTd~)>cv(v|Cl=?n9Jvux7;(zqX z(Tn}w(2u4#4@1A~g|kj84g-V@V0&M+W0N`0x|DQ}zxi`O|NYq-ON>FBaHs5r0|Kue z4m8a&sQa~SHwUD@nir@P^d%#5XxHgjCqzg$1wV{Wnn~V7R%uSz0)!!RF0FShv(%d!L;=e!0JVi;@5b{*5a| zLmZSkhdN$F^yAf1A=OF1+2>T?HaS2aFL0U?8u<%(3-U2=_WttV&H=+L0LYN*YL(!y3&qECB+6K*J% zJ`gh{3*&l)IIYEfRb2mLj}D4vNf+)vfy0vA5}KPNDHN>)W6ZV)oI!D z4Fdjfl%&h^;WA&{Ie)Fq^4t2a)tL`hl>0;H&uo-CX<#bU%XOQw!`QnmGJyvvZbw{A zZE;f$u&c}gWl=jx_k_+1P<8gIuM1X$Is)!+URuH`m6_s7(@Zb>(;S95neD>y{POL; zi8Y})nekm(rHly&p1RukSi z9p`3oi75mh6ru1W8&gxFZ{w`1IVkq)8COeOi0vY5K;28{%}bqU$zs`Sxz?T-iNj|H zpFMgU%~Ib^MEB)70hR3-vR21&J+zlPRswh2aHMrjdQply(SvB`Hs#~E8?Dx?N?t77 z-bI-(LfM5iBYy*5YExb#Sl_ufyEV0W*~Nbg|27UIJ)c?jZBtN{#y{L4Q0oa-lU;!f zCiGIf=7DnA;Y9g!`V4HG3DZ<#nJ6xA&WZf3Y-V6Jcm$k)ajQ%4ZctJ?LwuT}cjsLZbyUZ@OhtACTW{7ki!q!gW`6|0f`9NQEn zd_ol5_eE8i@7fr#Db^a%T_2*Yol=*mbr{s#X_I}RD6U7<AIG z`y!leNPQtVc(4(`qTqvQ*-&x?p#j1ZPAO4jZ*_#)D=7~Ww!b29%|DRghi!)g`{_B| zB76wO0DmXvTq)(NU+JH=J#=e*>r{_2>#d9w!ngsU1h`=Ng!nA=8#k}AJd>gU|P{G$AWlSMkPWalv2>$5AVcbV!mE(2rIt;^=|1ix}=7wcjeSb>Hd@>#^mt2OPED9HtzP1@3u#9m!6*QeJ0xKFXC)tDm7P#MTyd zg;7x8lPZ)~>v4NJQyL>d0B^0?>n)d!AdWN9QBSxxNu8AzbH3?>gx?reTaNDu8{B#BeYzf^IsEr5kbkN!)O2vVF*`_yYXb^ z1m0HzD$0^?))7p$_x@?-*v7$i~ zJF&GPK?#H14ve!PK6iV_>Xih7y?@rYYo`!KdN$&gc|LcuY!r&ZKGqDHw+|`WZ&hNV7od@^t$J`}t+H}>n{T&f0B>!9?2OnuA*aZd4 z3jA+_u!K+ZkpNnz$ob87HbcyNW;s#Y38V{0w?P58$BGJ>QQR)-`U1L1Q&(4gORasq zPR<2!m%XL7BQB-$W!>U@1VoYQ27gK&@=~09paY$Pi`8$B$t1Zo!g13M|)aWc39fS240SuvShQy5C^fvJPDp3CxAc`~#QBRphuw7ouqs!|Oeb oJzTg^(f", never echo key values. **Server source.** Check whether `~/projects/.common/lib/interns-mcp/pyproject.toml` exists. - If present → report "found at ~/projects/.common/lib/interns-mcp/". Phase 4 will `pip install -e` (or skip if already importable). -- If absent → report "source not found — will clone from gitea". Phase 4 will `git clone https://git.kzntsv.site/OpeItcLoc03/interns-mcp ~/projects/.common/lib/interns-mcp` then `pip install -e`. +- If absent → check whether `~/projects/.common/.git` exists (the `common` monorepo). + - If the monorepo exists but the subdirectory is missing → report "source subdir absent — will git pull". Phase 4 will `git -C ~/projects/.common pull --ff-only` to fetch the latest content, then verify the subdirectory appeared. + - If the monorepo is absent → report "source not found — will clone common monorepo from gitea". Phase 4 will `git clone https://git.kzntsv.site/OpeItcLoc03/common.git ~/projects/.common`. -If `git clone` fails (no network, no Gitea PAT, repo doesn't exist yet), stop with a clear message: +If clone or pull fails (no network, no Gitea PAT), stop with a clear message: ``` -Failed to clone interns-mcp source. Options: +Failed to clone/pull the common monorepo. Options: 1. Check network access to https://git.kzntsv.site 2. If you need a Gitea PAT: https://git.kzntsv.site/user/settings/applications (scope: read:repository is sufficient) -3. If the repo doesn't exist yet on Gitea, initialize it manually - and re-run setup-interns. +3. If Gitea is unreachable, re-run setup-interns when it's back. ``` **Build artifact.** Run `python -c "import interns_mcp" 2>&1` against the candidate interpreter. If it fails with `ModuleNotFoundError`, Phase 4 will run `pip install -e ~/projects/.common/lib/interns-mcp/`. If it succeeds, capture the installed location and skip the install in Phase 4. @@ -81,7 +83,7 @@ The first hit wins per key. **Never echo key values in chat.** Present a single-block plan to the user: ``` -Source: +Source: Module: Config: — endpoints: Missing keys: not yet present in interns.env | none> @@ -108,16 +110,22 @@ Confirm both backups exist (when their source existed) before any further edit. ### Phase 4 — Clone (if needed) + Install Python module -**Clone.** If Phase 1 found the source absent: +**Clone or pull.** If Phase 1 found the source absent: ```bash -mkdir -p ~/projects/.common/lib -git clone https://git.kzntsv.site/OpeItcLoc03/interns-mcp ~/projects/.common/lib/interns-mcp +if [ -d ~/projects/.common/.git ]; then + # Monorepo exists but subdirectory missing — pull latest + git -C ~/projects/.common pull --ff-only +else + # Fresh clone of the common monorepo + mkdir -p ~/projects + git clone https://git.kzntsv.site/OpeItcLoc03/common.git ~/projects/.common +fi ``` -Verify `~/projects/.common/lib/interns-mcp/pyproject.toml` exists after clone. If not — abort. +Verify `~/projects/.common/lib/interns-mcp/pyproject.toml` exists after clone/pull. If the subdirectory is still missing after pull — the interns-mcp module may not have been pushed to the monorepo yet. Abort with a clear message. -If the source was already present and Phase 1 found `interns_mcp` importable, skip both clone and install. +If the source was already present and Phase 1 found `interns_mcp` importable, skip both clone/pull and install. **Install.** If Phase 1 found `interns_mcp` not importable: @@ -249,4 +257,5 @@ Path forms (`~/projects/.common/...`, `~/.config/...`, `~/.claude.json`) are ide - **Missing the gitignore rule.** Tokens commit to the repo on the next `git add .`. Always check `.gitignore` covers `.common/secrets/*.env` before writing — Phase 5 does it but it's worth double-checking. - **Treating in-session smoke test as proof.** Same as the context7 / projects-meta caveat — the active MCP connection was bound at session start. Real verification happens after restart. - **Auto-running on every "use interns".** This skill is intrusive. Trigger only on explicit "install / set up / configure interns", or when MCP tools are missing and the user is blocked. -- **Cloning over an existing source directory.** If `~/projects/.common/lib/interns-mcp/` already exists with `pyproject.toml`, don't clone — use what's there. Clone is only for the "source not found" case. \ No newline at end of file +- **Cloning over an existing source directory.** If `~/projects/.common/lib/interns-mcp/` already exists with `pyproject.toml`, don't clone — use what's there. Clone is only for the "source not found" case. +- **Cloning the wrong repo.** `interns-mcp` lives inside the `common` monorepo at `OpeItcLoc03/common.git`, not as a separate `interns-mcp` repo. Always clone `common.git` and verify the subdirectory. \ No newline at end of file