From 76edc65f69fa61353f75dcf715da8a901bcbb7fa Mon Sep 17 00:00:00 2001 From: alwkala Date: Sat, 5 Sep 2026 16:17:17 +0300 Subject: [PATCH] chore: sync CLI installation backlinks, clean dist git hygiene --- README.ar.md | 25 +- README.md | 25 +- dist/tidyfactor-doc-v1.1.0.skill | Bin 41865 -> 0 bytes dist/tidyfactor-doc-v1.2.0.skill | Bin 48861 -> 0 bytes dist/tidyfactor-doc-v1.2.1.skill | Bin 50499 -> 0 bytes dist/tidyfactor-doc.skill | Bin 65967 -> 0 bytes dist/tidyfactor-doc/.tidyfactor | 16 - dist/tidyfactor-doc/AGENTS.md | 10 - dist/tidyfactor-doc/CHANGELOG.md | 89 ------ dist/tidyfactor-doc/LICENSE | 17 -- dist/tidyfactor-doc/README.ar.md | 180 ------------ dist/tidyfactor-doc/README.md | 198 ------------- dist/tidyfactor-doc/SKILL.md | 53 ---- dist/tidyfactor-doc/bin/add-skill.js | 65 ----- dist/tidyfactor-doc/brand.json | 13 - dist/tidyfactor-doc/package.json | 60 ---- .../references/commands/collect.md | 15 - .../references/commands/docsify.md | 15 - .../references/commands/generate.md | 23 -- .../references/commands/init.md | 15 - .../references/commands/mkdocs.md | 15 - .../references/commands/site.md | 23 -- .../references/memory/collection-sources.md | 48 --- .../references/memory/doc-templates.md | 74 ----- .../references/memory/doc-tree.md | 38 --- .../references/memory/docsify-config.md | 274 ------------------ .../references/memory/mkdocs-config.md | 171 ----------- .../references/memory/site-engines.md | 55 ---- .../references/memory/stacks/js-ts.md | 45 --- .../references/memory/stacks/php.md | 33 --- .../memory/stacks/react-vue-next.md | 50 ---- .../references/workflows/collect.md | 56 ---- .../references/workflows/docsify.md | 19 -- .../references/workflows/generate-api.md | 21 -- .../references/workflows/generate-guide.md | 20 -- .../references/workflows/generate-inline.md | 20 -- .../references/workflows/generate-readme.md | 20 -- .../references/workflows/init-docs.md | 18 -- .../references/workflows/mkdocs.md | 44 --- dist/tidyfactor-doc/tools/build-skill.js | 154 ---------- dist/tidyfactor-doc/tools/validate_skill.py | 124 -------- 41 files changed, 42 insertions(+), 2099 deletions(-) delete mode 100644 dist/tidyfactor-doc-v1.1.0.skill delete mode 100644 dist/tidyfactor-doc-v1.2.0.skill delete mode 100644 dist/tidyfactor-doc-v1.2.1.skill delete mode 100644 dist/tidyfactor-doc.skill delete mode 100644 dist/tidyfactor-doc/.tidyfactor delete mode 100644 dist/tidyfactor-doc/AGENTS.md delete mode 100644 dist/tidyfactor-doc/CHANGELOG.md delete mode 100644 dist/tidyfactor-doc/LICENSE delete mode 100644 dist/tidyfactor-doc/README.ar.md delete mode 100644 dist/tidyfactor-doc/README.md delete mode 100644 dist/tidyfactor-doc/SKILL.md delete mode 100644 dist/tidyfactor-doc/bin/add-skill.js delete mode 100644 dist/tidyfactor-doc/brand.json delete mode 100644 dist/tidyfactor-doc/package.json delete mode 100644 dist/tidyfactor-doc/references/commands/collect.md delete mode 100644 dist/tidyfactor-doc/references/commands/docsify.md delete mode 100644 dist/tidyfactor-doc/references/commands/generate.md delete mode 100644 dist/tidyfactor-doc/references/commands/init.md delete mode 100644 dist/tidyfactor-doc/references/commands/mkdocs.md delete mode 100644 dist/tidyfactor-doc/references/commands/site.md delete mode 100644 dist/tidyfactor-doc/references/memory/collection-sources.md delete mode 100644 dist/tidyfactor-doc/references/memory/doc-templates.md delete mode 100644 dist/tidyfactor-doc/references/memory/doc-tree.md delete mode 100644 dist/tidyfactor-doc/references/memory/docsify-config.md delete mode 100644 dist/tidyfactor-doc/references/memory/mkdocs-config.md delete mode 100644 dist/tidyfactor-doc/references/memory/site-engines.md delete mode 100644 dist/tidyfactor-doc/references/memory/stacks/js-ts.md delete mode 100644 dist/tidyfactor-doc/references/memory/stacks/php.md delete mode 100644 dist/tidyfactor-doc/references/memory/stacks/react-vue-next.md delete mode 100644 dist/tidyfactor-doc/references/workflows/collect.md delete mode 100644 dist/tidyfactor-doc/references/workflows/docsify.md delete mode 100644 dist/tidyfactor-doc/references/workflows/generate-api.md delete mode 100644 dist/tidyfactor-doc/references/workflows/generate-guide.md delete mode 100644 dist/tidyfactor-doc/references/workflows/generate-inline.md delete mode 100644 dist/tidyfactor-doc/references/workflows/generate-readme.md delete mode 100644 dist/tidyfactor-doc/references/workflows/init-docs.md delete mode 100644 dist/tidyfactor-doc/references/workflows/mkdocs.md delete mode 100644 dist/tidyfactor-doc/tools/build-skill.js delete mode 100644 dist/tidyfactor-doc/tools/validate_skill.py diff --git a/README.ar.md b/README.ar.md index c82a45c..fecc7a8 100644 --- a/README.ar.md +++ b/README.ar.md @@ -129,13 +129,30 @@ project-root/ --- -## ๐Ÿš€ ุงู„ุชุซุจูŠุช ูˆุงู„ุชุดุบูŠู„ ุงู„ุณุฑูŠุน +## ๐Ÿš€ ุงู„ุชุซุจูŠุช ูˆุงู„ุจุฏุก ุงู„ุณุฑูŠุน -### 1. ุชุซุจูŠุช ุงู„ู…ู‡ุงุฑุฉ ุนุจุฑ NPM -ู„ุฅุถุงูุฉ ู…ู‡ุงุฑุฉ `tidyfactor-doc` ุฅู„ู‰ ู…ุดุฑูˆุนูƒ ุฃูˆ ุณุฌู„ ุงู„ูˆูƒู„ุงุก ู„ุฏูŠูƒ: +ุงุฎุชุฑ ุทุฑูŠู‚ุฉ ุงู„ุชุซุจูŠุช ุงู„ู…ู†ุงุณุจุฉ ู„ู…ุดุฑูˆุนูƒ: +### ุงู„ุฎูŠุงุฑ (ุฃ): ุนุจุฑ TidyFactor CLI ุงู„ุฑุณู…ูŠ (ุงู„ู…ูˆุตู‰ ุจู‡) +ุงู„ุชุซุจูŠุช ุงู„ููˆุฑูŠ ุฏูˆู† ุงู„ุญุงุฌุฉ ู„ุชุซุจูŠุช ุงู„ุฃุฏุงุฉ ุนุงู„ู…ูŠุงู‹ ููŠ ุจูŠุฆุฉ ุนู…ู„ูƒ ุงู„ู†ุดุทุฉ: ```bash -npx @tidyfactor/cli-doc add-skill +npx @tidyfactor/cli add doc +``` +*ุฃูˆ ููŠ ุญุงู„ ูƒุงู†ุช ุงู„ุฃุฏุงุฉ ู…ุซุจุชุฉ ู„ุฏูŠูƒ ุนุงู„ู…ูŠุงู‹ (`npm i -g @tidyfactor/cli`):* +```bash +tidyfactor add doc +``` + +### ุงู„ุฎูŠุงุฑ (ุจ): ุนุจุฑ ู…ุนูŠุงุฑ ู…ู‡ุงุฑุงุช ุงู„ูˆูƒู„ุงุก ุงู„ู…ูุชูˆุญ (skills.sh) +ุงู„ุชุซุจูŠุช ุงู„ุนุงู„ู…ูŠ ุงู„ู…ุชูˆุงูู‚ ู…ุน ูƒุงูุฉ ุจูŠุฆุงุช ุงู„ูˆูƒู„ุงุก ูˆู…ุญุฑุฑุงุช ุงู„ุฐูƒุงุก ุงู„ุงุตุทู†ุงุนูŠ (Antigravity, Cursor, Claude Code, Windsurf, Codex): +```bash +npx skills add tidyfactor/doc +``` + +### ุงู„ุฎูŠุงุฑ (ุฌ): ุงู„ุชุซุจูŠุช ุงู„ู…ุจุงุดุฑ ุงู„ูุฑุฏูŠ ุนุจุฑ NPM +ุชุดุบูŠู„ ู…ุซุจุช ุงู„ู…ู‡ุงุฑุฉ ุงู„ู…ุณุชู‚ู„ ู…ุจุงุดุฑุฉ ู…ุน ุชุฌุงูˆุฒ ุงู„ุฐุงูƒุฑุฉ ุงู„ู…ุฎุจุฃุฉ ูˆุถู…ุงู† ุฃุญุฏุซ ุฅุตุฏุงุฑ: +```bash +npx @tidyfactor/doc@latest ``` ### 2. ุงู„ุชูˆุงูู‚ ุงู„ุดุงู…ู„ ู…ุน ูˆูƒู„ุงุก ุงู„ุฐูƒุงุก ุงู„ุงุตุทู†ุงุนูŠ diff --git a/README.md b/README.md index 8c26a08..43b2c55 100644 --- a/README.md +++ b/README.md @@ -147,13 +147,30 @@ project-root/ --- -## ๐Ÿš€ Quick Start & Injection +## ๐Ÿš€ Installation & Quick Start -### 1. Inject Skill via NPM -Add `tidyfactor-doc` to your active workspace or global agent registry: +Choose your preferred installation method: +### Option A: Via TidyFactor CLI (Recommended) +Install directly using the official ecosystem package runner into your active workspace: ```bash -npx @tidyfactor/cli-doc add-skill +npx @tidyfactor/cli add doc +``` +*Or if you have the CLI installed globally (`npm i -g @tidyfactor/cli`):* +```bash +tidyfactor add doc +``` + +### Option B: Via Open Agent Skills Ecosystem (skills.sh / Vercel Labs) +Install using the universal multi-agent standard across all supported IDEs (Cursor, Antigravity, Claude Code, Windsurf, Trae, Codex): +```bash +npx skills add tidyfactor/doc +``` + +### Option C: Standalone Zero-Dependency Runner (NPM Direct) +Run the dedicated skill installer directly with automatic cache invalidation: +```bash +npx @tidyfactor/doc@latest ``` ### 2. Universal Agent Compatibility diff --git a/dist/tidyfactor-doc-v1.1.0.skill b/dist/tidyfactor-doc-v1.1.0.skill deleted file mode 100644 index bb67d00a10c9443d645858bb48631a8f42f4bd36..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 41865 zcma&OLx3pJwk4RhZQHhO=S|zTZCf{O+qP}nw%xa?tNK^>`-6@_L=4V8gYDR{)=`iK z20;P%9~Y`Ciq8Lh`Cm8qe@|x%V-HgUBWF8DT4OsSdWHYB7y=;D1w{wrvyuMp-=cUx z006B2Tuk?0!Zz`}N`nkABd z8wV*egKCiJH9k&WRmJL7YVvvn9jA*q0~O2ik~M&7Y@^_nXD&5fj(>A9f#FN0jtP)?FQO&( zYo30qrE+-cPFDHoRzhieX@cW!(C0{oYr+*y%zcBz+k z2ma}(83+IX<3IHzC@w0eqD*IFY?3f-yUBnMd<*sk2mBVl;&0O=>vbm^qr)m-h+e;$ z2g` z-VRiLIi_U-Js@ipK3aHhu4gqOh%LnW#gxn_L8sWJvI`!?1A4@MY3$OSdh?iO_)ey2 zi-Tl3Pg7rz*R)UQ`+W3wFfo}~rJSLYP zd@&4}FTrd&z_@>&jIo=GF=slSx)7EA9@i}D-T6MnMY44Q`fgn*=cngT9L{8taBV6n zL5So_Q9xa07Y@4kBr0#Tn=bF(Vb&cJm~h4r!Q5w30U!czAf!IH{(##ll)@ z3Ge@~d&a-`$O;zC9{~XXAcO<}!2VCW3rh&fiHpj}i~lpdjq0}TCL2l*e7qZnfIlH5 z4dt}&#<8VtM#=dWTlgn%6$L>CSA&Lfk${rxRweIHj=g+CT(UL0Y%Pr<%Pi+Ee%#r^ z@!RzC^3gTx_v>u$lbmWMx)9jqS$j$tco?`*_4pcrX@(?SaC&2@emTsVMrpQ&iHW3D zNDMPsmosc;A1bA=K|as2l#{Rf9UWimjIRNvgbK9lw_7gh@ zbuR_f>~y4#?RFQ(xRJ0%>Tqr$@y8R1Ut+FLN%YL@jNjx;j>)OncPTNJ8miiwOlhfd zYPPb0u(E-Qf}W@VY)8`wIC(Op^A|g}v@#oBuA0oOC<2Q?J&F?_CvP_g55ZC!Q?m<_ z(Y_s(+#Kj;I7jIrl)#X%jjXR*^bnW7f{+)|f<_#^ep8FBhE?ZCW_j8ENQZ3T*r`vx zmKnNb$wyL1$^A7ft;eDG64dSeD^wh+XBOmd-UP((eTJqMz&fcWW-(Q@GIdkrEu8+s zH0@n2Krc9Ob0e&U4D_0y#!(AEL=Vn}q(mY*t8!(?QOGjt%pD*&G`g3}WP;ONx--y$ z^e8I?TcXeWthz)cD|r@^9k;;wV+qyy+s!cP_s7#|sUlZBYnn(XVrR+vlMzB5_zE8t zfs$v0FYI#Xf!jj`y%0L})|#Wm z9vI2o6}H)>UK3>5sE?~6PzqQ}6Q`2aJ{Pzjl%9=WtZ)6nq z9>`9J2~r03vd$oX<`R3baT$bD-c2rJ5VLK81PoRE0NJ~MnU z_I53?$h!r>RJU&B6m6*GEU2RAuxmYww|ly9=Q}O#EjK2gV;PO^LvMwx1?XD4Za`v_ z5~x(cCzLI3QT4`a)i>fgW^cZ$I&uFnr*}eK)$4#j8IJri%ZM|{E$<6VIi zX*gB&IXi!xtWMf34e7@xOq^6pHOW!yB=fcz`fdcBwM-5KzDk0- zqsJ5UBfH9|&;Yjv=q<8CbaT+N`Qz@kI_Y(K+i~4RC%jO>+`7GrjIp(=2TP5;V%szM1;`QlO*Rjzhz2)bjVnZ%)5yw(pxKj8csCVoF z2dr3XDaU7n-_#x@7fu05lpEz0eBCga;R`RKjreR~_lu`9Nbe6=+O_FZ znNRI@;G}TRRscGC!S~CbCTw1WJLB4IOZNQ-gs}eGmqKMhy{p#S!CbG1+X9_=em36p zV>`EvOcq4H^&WIy;e8=D1JUh^e3^rdr)BK#sAo@F99opE;z(4w zj#xD~+EscLE9sEq0r8er$H|u~A>34}fK+O|7wJE3+V87%Jr|t#bbZ+$1xdNBlc=Zc zq`Qwn@ZvSmS(zM}F{8Q~8uj{pwL+Cg^r)7u=czglp0GKjm>S=OXO!wM!(|vjacH=V z#;{Mxe@Q50+V?E;lTP7x@Ui^mA0BlF&qm@xAQ7 zhSm5N9)Z)tNnLW(YlfXm9 zrvXZ`KM)K8f-K4L(UR|S_}ll{@0c{lQjoY6AOq5OgXrlFDgda3sk!b5rckzeQcuNs z#l~=T@jJu)WI6D3-q3NsFI4FG6rvF@iLIc?I1e3Ic$_hz5!1)e0ITqlMrb7QdKy)C z(-j!OytpD8;WM7<06)@J#L5QR8leizG5m_6K0ym@4u(9YS?1k#UG68w!su{#nH<4t z&dNmlc)JW}QkemQ{`?FE^-8c1GH{vH#}=I04$O+)3d>o3_e~sut z#XClh-{*+LV5e*uUsG<9MnBkydl#oed*tT#*_-BfLJ9M#=48w8^_x^6to7y>{4!KZ z^?^Tl%vaoM1_Jqwyc~HN8dZMWt>V7~-OiRfYsQo|yydmZ*URSs?0f7u-jz8S@$&6D zIo1ZQ4|@k7C}cYVmnq{xk}lzp};zx zM_B~uwopG(WGE}J5Z9Pf3>}bAj@ujz&MjP0w-3NxkATkq&)qm*bZ@0HdqqrTZUGLM zYJw9_Oyf79_kv25p|n7OK}Q{+ydI(Ez5N+K|FAOdA@iGPAzz?LzlMCUNV}=^ns^-$ zxjB$G>hNZ8?W=4LGCj-Ab|J?WK@N}|UY>TD5VDNwP&izaHQWJ3oPeSGB`0O`;LymF znxy>btJZ)F$X;-LWfs!pdW0+O`KVbuC*NCuk6pG*XC=fueR$thq^#1XMb+G5cYnIECnp(=DDn3A7NEfbM*!K=SQ0E~)IPr3+dx3{k&U^sa`C-5Co9Q-K) zftuVuRO)y_>wlqv+lp6aA==P}Wue$ic(SF6K#%O|J8y={x`Fv~%oAw(ZH1pl$}tmh zQ4($MlwWYAl&(NBkAT3l;Y1Fu=b4YuF|ff_5ZM7VR5VQNS5Tg?X5WsLy9A{D!DZ#7 z)eI(_BikdSdzIOU0V9)bbZXL^(HFe2zg*yZhnvaVxsLpe?()^=9FcpdDQIgf0p{#H6OgYxIVc= zK-8&!-W~FBu*UeR$@p>6(tSZ|oPStOr_+Mk#w-rrUYlgn4-ZwfU8G^>AWsYhAX3=y z9|B;Z{mj`zt!8by9Fs~?(OJ~?PmI&zDO-=T2%uIoNH$W?wdDYlR4YU)mzipqYUl5N zL>(6DX{M@9MgCQU#LSj#>9>ealOy8|!E2(pWHbVF7F5_Ipx%)l>WTiOoiO*86zZ4) zyCj};l^gdO`>s>BYiKnZF`Sl6CK_?*59EK8c3sx7ALw{iJyVN{NC_4B1Y%}_zmp=3 zP&Q5llexV|ib}s!rnn{?5QXVeQOZK7$SI()I+_s|NWcu1A8NY>Iw9F8XV{Ty6Gg z8}9wn@E0%R61zc#)uf^G$6@y|3#n&32=*R)(8*^o^^Yc7#0S4ag~Ia+?)M8rFE7(7 zyCEf%Z?tLJSR8%e7Kyj1+#s$c2pA>~DxCzSZTKqu?L%)G=>3aPNzQBi6r(b*2^gFz z0BkX{R_EfZgxJUF^WgK$d6<}JM6($ro!f1`qEDfxdEJ_s$+qY^mX|6cs|nObrUO&I zNLsvqE=h*Q(<$)XcG?*;jxdgpl3b~_dz9Q@VF3}kB=xg;LG?k+(($1&$tk~a6B88b zvy9?nTe760Q#!UeXIoVyWK4oB%T&D!zG$bNqOozZiug<3)?ov|?+!r?Xmga)re+nr zAW5rjsO@@sD{vlHG!X<|Zy6!!a^l_Ct22B(DtL(Li1Q_6{xcqg6dcarU~X?AP^%Ut zZ6c}@xH$=xX~9}1Sv^Tf3{ked+#(w=IA9m>+>*%yBGO50Ig8n))H0m0gQNJiz)C0n z;aZ8v`Zi1L%2vlL0EU8UD7i2;xVh3HUs*bI0X@w+G<1*J$=x+DU?j$?=vVy#cqX$w$|HLZrC?SzoX%M;6@87RlvmS#M5o)-B2dfTn1r(`v zmHkbnVauuMn8Y+ofO7re8hWmPJ}|gS@_Fe*p zn5+GaGgn3kuKjy*g9LnuHUS%oCgVAI2|DfV%63a4#enKha%B1JyOzmK4^OJGbe51pAMx7D+3!RR$YYvMqOiEAQD+^A*T{elkO-kg-X>VOMoV&8=-fhfI>XbX`k2U5d-glx$A%QhIGi00;d*MwC7?p+J3y z$-qtuU7|a9Z`k$G`>#;S=z?IR8>helN^hu%(yN-@WxI__qKd}Dq7kEPLUGFfZYj`^ zWxy@qG^iiJWmSD~zZlnZ70RKs5}bu7Z&Qohm(lDHSj-+ft}9CVYj!NJc7B&rP68IS zpt<3(_0zqAwsM~J)}jh-Bf*H5 z+205H^ssR72M=@cWxl=ES1u|ev)B6ltPeG31_=)mo6TnT+B@i9xgFxmYrh{Y64lz? z$L0DlIw6~OzON7AqoSYB6BWQ&&*mURu^fIrpT`Z@n-EaI!@^{H#RY4C8agmLO9d$R zYBcVb{mErfA`W7MgNv(Kf`&8RTC1H40P|Gx2Gv*QZ&Y zirM3L=cNu%{Vi9<>_L0e15BR)*RL0Jl%WALMl0YJfAhIv2tTb?>Xo#p>>YwYlx2XeHT3g z*-wLgYqX^2)T5IADko_E^N42IrvvT6-;>)n1@5QFO{`UaQ=Y4(czVuU4HSndJL5#THZTupe6ct%Mdoxwg|j$dWH%pmYaX zJ?oYX+sP_R8UuF2l0pGUoe@H4+Lk_&g9fn}m>3dlJe=9KvQ>Cz_=bWu^J@vRxTWrU zJ=XLY*x5q>FW#osy&?ZKXZ!}J)K!WFIfJx2S+GWa%O4M=h&{0lcPXk#9}5pcXWPU_ zQdfoEeY8SL=OMV(VK{Oao#WTFA5sYK&^MD%nb94x(4b(v_R;4o?}DI22RJz?LSbcc zD@or&C%bZ-dNJniNZ0nHEJ>2ysmrikr#RWO25ILnCoyLfEvWkd2g(9!x4naFZH+QX zHBj`~0cZGQ=cd?fYOgWP>W6>y64G^qT}?74G39yhGT!O<1Q zvKAtRjX`B%ET5_5zWWxlTPLFO{wY3l$GRgA=#3hcm;v^Ih$fczg_^B%!HVpRw#L(v zw0P|2lT?W=$)XO6EIoGaC&mvQ+*tD)d{^h2qRGk|+yWv{iQZ&!TdQ2-1Zd^#m;qYsYx z-FKLRL~wL>mc*wVHrY;yMqW-b>hHIzO$#1A(ASygGxyTv&J2GgY@B)ewZy8d z2&1`jq>5*R?X{6mxmG~QFAjmBfRg)^6}V)bW-J#08QZ?f8&S!qnGd~nRy{!MobQY+ zKa)M7o08i1z=>d_LL3BecuBGskb5I$Pv`sai^0go+*g>z9}bX#$Y!4Hk(E(Xoskrx zH4xEP2Z4cui1bQD`+80Lbypephz%7SfWU-@YYlU8 zAjyYIZ7n@({DG|2_w%hPpGC()-bn+VyG7-J`Ww^UQ&7x(9=oA%J#unigBf`an7xO7 z7{aa$X{lzv&gkD1;B_6q!)A#tF16);Kmk3z@P7*g=*-RoruN&H<`uV23LiI{Je^LW zMgRwN!!jBpp>QXGlf9i4r^?^bssvKgE*lQ;jP@=)TR5?$aW^F@dXsn@sN)EmArRUf z!`>36eLxNW1{jGFkbRgDdI4okE%apFp$|O+Akn|#;3%semx%lG$udy5Szp-1QqZdFoA^<=m#ee%d@qdloY>ZPhw;i!Z zQ+h^~oAMiki2edXBz_o-M^YvxVk8lz=3S9ANtsWv_#=WdC!J#|)g31%N!hk&r>JN& zqsJ=OSlcX{(!bii$|h@d_njcVaF=$1^OMkul131ebk6>A?sD?J4xDL^abS_+F9WBb zP}T0%F58CtecfHV9gskk!kZ`*wXewn&-3d&u70`px*m?e*6X01i=a`Va9fmtDN)zU zZ_X0C%%f~>`#4mEQmIMi4H2i5X)iFcpA+E1mKt)yk0|B`7EGnANsB2KST>6t3Stf$ zBu59s1R{B_ z1g$i7)wf!;%o7idi=_Ob8bWS(jGc%w$0)zU)$XX)ZAQH)WAm~E5|0?fpPz({6DFP{ zrcmiz zP5*b|NSqVKJU6ZLnGyel^nnKp6U-&xZ-R&Un^%U&(E}6O=4YUhaBooewa=Z=AJ1i5 zC1b8}0Rx2LqU4yF?CCIU{(5}GLUNqam$q|Xx9U#Uvud+bOtURL6 z)83!m-!DZKgU7OmS-*{3YThsGO(~HG1~LR{yPua6{@}0d!EN*iwa%YL6iged_(qT0JwQV-RB(&66_!&2HpGV}#QF zbX%w*SwXR3c;yI^l$I_KdF15kBc6%H;3BkBrns^J3*~#29AT

@qSe=SUS}53JNY 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

!&~UIkRIo^{Ean}?P3s1dTw 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 KHcr;jU;hKAKZue5 diff --git a/dist/tidyfactor-doc-v1.2.0.skill b/dist/tidyfactor-doc-v1.2.0.skill deleted file mode 100644 index e19e22a7174b4214244b4ff1514323644876f612..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 48861 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 Oe%JwN8RIIy|M!1ySq-lM diff --git a/dist/tidyfactor-doc-v1.2.1.skill b/dist/tidyfactor-doc-v1.2.1.skill deleted file mode 100644 index 45e304be0c9f13325a48d8a776502dda19a7a111..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50499 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 BErkF8 diff --git a/dist/tidyfactor-doc.skill b/dist/tidyfactor-doc.skill deleted file mode 100644 index aa8dbcf08588d320cd43a9d11f26dd8fe1930931..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 65967 zcmaI7Q?Mujj4irt+qP|6XWO=I+qP}nw)fe#ZQJk6tErkhcWzBrH9pcmNv|Ypbs{ef z41xmi9|t-Yke|KjKV-HgUBWF8DT4OsSdinn}h5&&4XFRq`6-*8Y0I>Y; z#QLAcbpQ3TjY5|!FeAbh@iD%t8bQ3Ho4-g>WPgANA|)tp;o6#)Th*KOR9r9w;XR@^ zpL^&lP6dIOzG;@ng3N*KFnWd|f3+t>@@gsyL1xTBgWxT=u8-S?lZLkRb|+ zlnY?8+Ri)e$TAyah}Y`U_&Qp~Uq8S3hJqXTe_QJ*JgMv!ZAz2s&X3^#%e`=S)=E?3b2dm4{f0&Ml zbTctw6bUhsg(F$Jh$3G2DVSF>OiBqwCvmv@Hfs#C(YuQ}%0%sObx|(4l+SNL3v`j~|{hIdPnJFi^#sDXpl;x0GSS#uZDy1&QDj(Z1!Qo+_5w|BOI7i01ps*N! z^hxxZx<$sJ36su;K)XW_yvW3v%cE)7TNmZivAFj1@mE|8YP7(eW#!?3>k~pDk~ScO z!tm;oVDiTw<6{l#)J7^fhGV88MWlXkXWa>Ec0yq;!E)SZH=;LItlK4=j1iOFO%&1! zOz74U$`4t0zAZ8qao`ierE7+bU8_Q|2kodUc+10hI#I(&SOI(LkZlIPFp&6MzBsg@ z*(~!()YkuLz#eJKe4Uo0hp$*l<+!GVsuXCqkH!?v%)6jJlz76ARK`^9W7<7H(87wP z?j9Gt>e%}^<~Zt=k_(C_!J@I_oDE60siP;;q9LCGCR*u4dohF zSjNs=V!V%=a6-%yD$*+cm7pZNsRdu){|YbiKlE&zzin4Q0{{eI0svtD z&+rOM2+E3!%E*cTi*StkwJkO~+BZJIZ9kcyff;LJPV44UKTy?L?6p{HOX32+A7FS^ zVaaH*AxcgoEe({lu(jW=-6zEZ#K-QuZ}nOwVzs_J4up*<$)@Ga&UeU@Vc*}(*wWXkJ&y^_E`r$ zPG@WVNuTX;q3m**#g{_zw8_Yx!=&7HUTgeT_?MB@r{;Lol@HY#wcH8Kjxsr<`-kIO zesnL&t5xLVix)GqN$20=sUrQs;Wf}$*~h!lndF_fH%e5GE%;4+RH71*N@<-kB4%jo z^g}<%TVfoPQuk2%br?YC(zg0}5v6ha@CjRG&gBv*Es6MMC6(RwY2~LJHW`y7D;3j= zQla8Ml$18lFjh6wC+xMUAyg?&;)Sg-Qky%E2tw{UONubb%%Vf4c@G-)yOofM5k5Mn zf7jlN8Qf}0+|k9=5L5)F~?!rPOxmD(E35wPHfgb?SPM>&g_DWU!l#^v%M z9*jikjc4}t(Vv!dP;c8E&=3AH$@j5s9Qdc>@kkHn`neY({!7Mjkh|_r(ksgQGwiBB zRkw6ocAxaR?q&3Q%z+1sF>cU@SXKT>uW)PUvisMH-ODS>N1OEx<)Bi5BB*-?!T}Lv zg$SxysM7e3VGw36!Y}EOh36c?stOM(8O#jY;{xc*3E2Qc6W~>d#kDi0Z?m_H_hrGz ze7y`PEg{X1IOI;pob$Iy(PZDu<4yjl;Yd&+vTB+(sI=9Uvh$M!?0%-*#_b9oDv;1yG{bw`&_4?krv}G)k}YKRH{x!vl%0>bARJ!K0I9yv|<}XAex?^NS-PjK+R2s)1fx9wkq*AnMBbtu`{zWk330mdQoEnS} zn&`0FXFZLd&*szgnF29CaUUA>b0e#;nDw@TE~{MA z9INbA@_%ZeiLs+3c21kqZq?n81~1!Ano^2|OE~2FoW;q*K_5qnw>hnRNh$BMR(SeE zqHMK2KA-F$1d3VH0)wNXOk-QsL&#i}L|kpJ7fXInl?&QmD1@sSXjoEe#eM4TP0Q6) zD7%F_yWOPw=EYsu{R#j1@s{$s)@{PK-TC^}<3li}{NROc5%^ z87XV^+*8@sCwKJnO5b#S+p(cxckXrNNYETYvhoed_6`S8|1`jYBxH0UD)N_Fku2bE z`@Cqb{dy3jBE92Rkyc+==e?Xl7xu;dGMr`Krce$0sUw`X{9lE&a*cVr(GXYWN;rCN zeR#-3k#3uKg4!vW>^M3vl07ONcW`yhhQX}!a~eT^4dlQpN$67qz-FlP=U{b&eDg(W zde*Vbi-aR;K`dNAqO5GR+KMw!|9s@H8;MQ8Ag3YS>4*j-JLN)nJ*Ul5pWVG{EL{1g z%mpIzK^Zd83e;W1{@0F9a`M+bQcjwm;KXF3x6vgO`#$^`Wik&VY>e80H&LhE{Gtv| z4fh8!x}XT`A)x>YfkWROUcvnO!tfXXp$acw}9oc=Ton$rgp7 zm_*>|&8G2bM4s`2jz{HFpK4=FVDHjPCnCok=t1-b5n6$_rR1gsg-ml934UJ}hxIg5CN{*|vC|an-ZZ!QF+w*T=G^o^ z60E!^9;KufhG4^SuNE`bXFL2b9S8-xFSlS=MD^FjgzK?)MiFEqaMs5U0eGk7FK4FqsOag8*pd+Pxuz z-nh=p0NAmWb=vXs5cw0|AwY8RK96ZjQCMLEZ|KrRvX~#E{qaLc^mRcF15z!}XD}!L z-nz|efgUc3QI)$-Q|*EkMHrIayd}9UnC9HFzyOb9i7uGLl6G{2DA5GZEp7m5$}KLw z`Hq$;lr19QNl3Txk`J5%xTJa>!pRR`W!X-y-XMA^(pFhK>~s`ntWKQ9`@rznM-U1R zuq++hxRr5U>O*j9*-9;uXepl8e@sS$8&hMmX(d%J3KtC!f{lpkjrXt}(2}P{wnD4+ zidaT~gZP9?Qzn5yizEIY+uSW-f}OYp07k=E}o1 zh+X6aq0@mE7ziq+Bo)t*J$)-*v~8=1yQ5!MXm9pV{x;f4@9=>VXt&RwfFrk_7)Dr= zh9YIr^it8v~MO^#YDB!>LE^&MfZbNvIccM=8OcahlH^PAG8y0;+?mZ!soo#i!1b(UuC z2K?-6e0c4RLuttee~p`Guc=54L+!jeW(IU+YkI>(MIz2p0Cd3?FS{zTNsAaf!eCZE z_E`|m!ewXNLBNuAUMvoyDs@#B<-EbLn}IP3S*WSv9yVGdW@wZH>WEU@XDlQ3CV-kIq-7b84#NwGDc<8_6TAW zx--hKDwEb!1zKscUd7L|pR|lvuD&>)?QkgGSK9M6urU6CG1%h%MyGtUZ~~wWFIa%i zxHzXAWf!G}tRj7%nFN7%l^i%DEjM_UiB0y&LnpOBhYmwfv`$_aJxWHFJ%VP7GfX6a zfbO)`Ib?k{C@qW%>pTt!l%7C9kg$N>jL)ipSm0&?`Rahw&~?iZqg{@*JOAeqG*-m6DCforIO^Rb&_@40)01%&RQ-D0$(k`-P!92`jJy@RAhi#3-lJ*DY`l2+46CB zTa)xUv+cOi85i%cvs?5qIw*^|$}Pv*9aMhd zs~=K-oXD$+kW#Dy&mI(tjF^2=!1R1A!&5d{u*|7(hxEi`XO9PE3)XLlM{CO;gVSSC zFpAfFKgWfHaD86ofq?}C*_-*~k zpXn9O-bJ$AgTDE=P*gk4S^v~zLY)xDt4~~uf;VCnf-8}yu9=v@9(4J)(M$(yPiCLH zdGY%6s{7dJlHT(3P@ypoxR_(9K3p+;5!5?&fdf`7wT$Dl(QkT>k_)GhB+8BQ3ch}w ze3K*UH6r_lP%3v{E87~Ffbvi9SxJL17~`aHL9*O+i3mCw6my0nEG3<~B$rOBI#Tip zx(01QKA~0ed{QMgMZOQw@XwtN@`;( zQw12WK#*wXshJsbSsM^9r;v`#%t0w3(V3E4vVLF@Pj>R5UWk z<#MOodZ+ocUQ&Y(y;3eZauc;`x(sID565Ehxe0xJ?~c_DD%Es*_mVFJDfl3y3fq_L z;5U3k-F**&&1*)w?tL#~!|_LE53W}%yW#VGpweo@zUp1dmV>8wd$)o^t?p&5h<74y zA>A9dEnBhdJHod2y#5s|R-0|Kq9pVR1*@7CyuR?Zw;#_ho}JS;tNTTFc&_yTv!1jQ z!Db0nS*N&Jz`!j=V1@c@vg7AZH$R@Q8p zZgAk5`ItBE#GvC+HFg6bEubTFfg$vo6nAvG17U=ejaW&i%BgAKy{>6OOHf!%Zvc?}d7IUvk$x_<6-Oe>`wYqhp#36xg@(o3t zv(Hlr*PtPmHU;&{?tO65?9$R|6yT)Xnw4Kl%6c!`PECU5%ct5_qm*h}dMQBs5VNp4 z7+kErOleOZhoi9ATpu)z(gQ*TC&?!{ky+O)V?y`QuZQIM)9A#8D4Me!hW$5}R79{k z>397HM5_nrJGf^-YSoy2^VeiF#mSA!QkhFL^aVR3Qhm~HbX_bbQ@>11C5 zS;QcH2dQYnb-mVqI!rLepeyqW8QH77nsT*Tw?NsQzaFriT?Qllh&&_!q&rEs>jgq} z?DPImQKkn8P4!-F(?LZWpC!U2H6*|6;z(jn`*@HLKluMS9dbK67t z%60TAy{2kcHD4+3a=^x8ep>*8ZJ50`^Q6MSD#A!xYIK%(N+C^ESSux^tW^5D1M%%x z=1<{Aw!MxKpKy61lCf(B=woT*sTu?t9KE$W4+z1M@f^OlmkR?Ak<-KU7;GpV7U64S zwV_X){X$wRN{iZ@4wsE3XM3Z;-xyNoz3R-&VnDAAF+Yo9isVKS*oQypK% z+OmZ$GW`;&&&iObG6-2kdnW_DgtFnow@D`@+ga2#O{ za0?xyKwtH467H$5qyShJJ4PPUn%gzeh(~g66t8_h+TNe4zm#H!tGkD|0DBCjXU^R%Yj6N-pTxW)%5fhB zE5DKmEVX?6f*|?{fh1IQ)?6_Qrh0lQ!%1?r}KEJ{!U@bcqQ-1WD zf620i7ATjygsKSESaFkF6{KtL7!ZrcTlAtgyw5Kvhdi0LWM3BwVmgvS zGVCi;q#pMDAtTyE+Tv~beJAq|Q|#&z?62gQutYMg0j~9a+b+-q@69KfRZq9#R~u^D zLc!~%`C@x#GBE7f_IpCze5(FnI$0?#0|d8l$;hY$;T2+0G|J6NZ3YW^mPc{@`pq{w zI<}Dt-WSeTp(7YgTd3yAC5egqRUmRQdze~=_j{xFgvKc@T5v*e=SlpzQ;u{2&-jPi zf@=dupAjkb!*V&h7g?|$#}W7o>+>omihjfE{;)3n<)u#>#`pPRj2~Ew^9#qB9!01g ztkZ~HPH8y3$b0GoMS0z)ZHeVQH;A*tdL_Ex;X!`-&XB2_nNGGOXAgpcb_L3K9dEfE zQe>dzl|hh)LXOLKy8KZgM#)mFmyFzy%uCwXn6E6G&5>*gg53C@j8WWd1dnUu52gDc zRTI_$Is`q2>Y4^8(`BAYpVr?IUOW^#qdvk6da zUoB|asKkxig@=J1>AO# zT2p#q@3DiGd4bvRx=ETm`OZZiLGcfudmdwTWOtsVcAEEMpES!DX1>1Jt?0<%C#R; zjvC$?G>}k4S!d~%xX>0`Mz}Lp!d7jCp=}8kWQ1GNUn`B!y$aTye6MRPoQpx{yawlS zO>eR3Cg7lxz_T!snH&4f>`Q6u`D%4PDLy6cE6^#raBa!Rn_N_O;sBONvnJ-8{=Ju&N#O;Hu zep)P1dGY(!$4}KUK#@2OVHhIO7zl~wOKQ(L^uux4*^J&O1>BdRwk<~s$tn<&(;C~Y z*_o>jCfgyI@Uxq#yp`M~@8$8UQ?}KNPbn(>aLd7e&eIxi^o+;^!Pw~1lH!|!YS#!! z+~#1!q!;M?`78O>(VUCbQg2q!tqL0<9L{T;g=piJq+DN~RFyfjv|y|Rk2Dkd)D7C=SmH@L$(ht%y{N~9c304U)mC_AnW!KoN$cxMN5YsOJr)Dswo!k)Qhu=Zz0)SA ztV;&AodR-cUyrw@Y-iw8MQI@}W95+3BDk6DJlcjD4{fSYl+AjiEVnJ}Tc1d_jVMQ6 zqpRV;@~#Lmlm#Q(rdophCMw(x7Arm!gFVn=1s>g$!FWJYD*kAo!ubxM!JL$;JoVa~ zki|PNXn>ALNW8L80)`)ptQ*QCsc^O}L7Qnxp+!sRHE1|NWJgZaLXsUAM&`#uCAg3x zyC#yFZ%T{`#hO!>QkM@Dl%gr{ROYWrY$&~Z+ll}emY#rhHI-rwUJ2z|G08Q+Wp+@f zqZH)LqUvuX`--6Nl5#A^7ecS5o4BF0DpqS}G6*%roz#8qBzk>M&)r>R7@Rs+_?ZG& zd3m$_)D@+Xk&o8teIFg(Ppy7}gN4cFa`AeX+C8-y;YaJe-4zkl+26nBd2_koigo?m zzumI3oexqXT5YC?7-p0P=JUP#qHLc*PXYS?m+cT*qyn02$89N|t< z#7976bup01=HYec0xWTK8)jJ526q%&*~*Zh=x|DvNMJA`4#Dbg65^#;8r)+RkOOTY zaUGa0vjjAzrUn^7jm!a?RrUfOR+TbDZ5TjSg4+@X;Uo~`_|ZmK77zUl{e+5#>akSd zE#npI7r*%f&QuWf87-CBx=PNU(V4jxq5(=_Y+Wg`3Qr?rK&NgGZQ?fZ9F&QT#vm)s zT6Sca^QB-R2^qhv+rXQ<^C@K0Y)uk5PLn!NTEf=4tVFa{KZXKb3eCmrX)`*T5$Qep zDIE!P{D=thvVRyngm1Eu_(XlrG)yCzo~JAkXMP!=aKxqd4o=WmX~a74$R>F0%qPb< zgH+eoV>UM{9v{F|iEADUW25ajPp{B0%D^qs##ZqvkNKhq>C%##VDekDm}Zpm8I}pK=snr@n9DZ@TXJ(vr?*x*v1<9HoBqt z>@62LCY(Q95B;he(!`e+sBPNn{#LYzls^hUmY80kY$~yaXN-&qOY(abmAHb zS+v7o5deigBLhhikRoCTLwccCH#Y`T&^RIr9xFL}tqL)-f4!aGQY0qpsBl%J&Ej(3GXM%k0T=ubTTQ>ri&BXo2i%Fkxq#`46#JWxW zI;2r=BYbHhB_7|1ylJQGW-MiANVJgS?iFT+7`EdfNlvP8XZha~Bua9#52gvD5HU|w zyBKpZ_7to*d@rA0?31(L+9i?AKIFn0J|#+k{EWe2M>G0$iqw{zX3hE+oLD!#SaInM zzEqq#X6%v!j=)b|Q=+)+e#jeP1#t^(6~L}Vg<`sIW{r$%eua3zY1FxelicftJt1Zy za;?hk*+OG4=7}X|yK`aOX4FdaQT9;u3LBF%6yhY-*T8$jp|tq=w@n* zW`#PUy5*5#3rW54JCSqohL6nZsmABX#!DJ9se^yKBm!>41=W4@(Wg$6F}I4G$*UE5 zO6szHK)}pt`tux^LSsC#EeRJ`_`$jNW=VutJBp%1h8kBie5gMtK($>x2QtvZaxLKP z_rf()K}x=w>V1Y`^fm{fT_deKaUkL0YUy}F8pIPBZqj@aZ%xIfPKYGeBVQ!fS_QVv3^ezoFgK@*oh$(yTSe44UaRV!*)*g ztCP<*?sFK@kkM69Ejs5$b_5Oej9>C(ApNXH1Qz?kJE#=qW%*^osM|yYfHrgj%syk; z7fdcy$!01@`1!5@0uXrsSe+}$Ny=*eou&P&AV*WlB*&q*?oc4`RnDEIMM)Y3^g8V? z7$IIQO|&41)JL&V;DOo%py0*(x6CYxWUlK>fi*A+wi0+`I{LB;WsWF{5i+_*{4@rt zl3`C20kkv=X9s>w)TE0OepNy-y2m8Akzc9HCn4!Gl}&fsEo3S0Q7|84L_v5YolwAd z%l zIRTT_qsbkssb@}!jFmuv%KlRE0)5EI#y?@CLBC&m$CAw!#>uBl`)9bK zT+;)rv?^bXFgMPjT8PVQq^6ZMhzvpJbY@Lm_-`i#yP=orZhk3*; z<%qLR1^Irr zT=2`p$|x+R|6E+N1N#)>U%f6>Bpoc>WiXGXdEj^r(84?oD7lBvDvSRX!6e$tTY+*< zz7S{qP&ViQ_^inrXt;aiwZ%Op#H8{>SM?#9?A^=Uzs5`|JV1*;7OxX-lBf&xUqdoi zcxS8YojyK5i$7e7yp0rj@0dFFRX}0zIScQ@4DCvbc$8!dSfV%WL5of32ZsJe$gad| zAjH4m8?}z-e)0czA+qvP5v=2%%3KZhzX_4XCjW#;m*iP1Y&C?jTd-gFMUX(!ZcTQ` z=JfU&Lux@5*(HwV60-c$wx+6z+#TfGurFYIMGBOS9U#spMQtcsXj%|GO>?;qa$`^E zf}R(-v+k5^9dJj6m7CAMW+yYgX0|3QfCc4q*lHw}aW9izQ_@q?Y6D8H>Copff0&31 z_&vH@idt6U!e&lNC+y`of@z6|!ViPVi}qa!QVK$>>QRHGxH<`9=AgYIxBQ&}c}cx( zuOL)g!*DJN6Mq$a*ZjRd%0l3~Ae%HYo1@fYZP|=Qx7%Ew-9eC>V;^~RG2QuHFD;~s z3P+5UGprIMHIif(;42rD=z5OHMn3=IQ*G@nMd0fPTlQaG^O;KzZYCP*`<}Z!w2m&Y5C5)wQkcsB2{~>xhs<`C}wpRruRcC0=%} zZeMNfp0iBy0lc!XA>-BYTs60~a@Q!V_@m4D`s<|UDm8OGc|sf|OfO_B42O(l-}id{kcfvb@a-in>HsDsf5aP( zH#;d$0J|M9qTp=1$?4eJOgo+NWmMv^nl41x+)_3e3Hd&xvZhRA4B-&_MyPIfW%=$r zXI-5Z!Grg9T=MjQ(Mwg(`R%vM{|#nq6bpQe)Vn}F3g=|v~cuUeQTLGjD08}k(q0;rSPv|_cA`xHeEdXHG$?>)XhjcECCX zVs_UMVZ`*U;3S8LM+gsh&oHXOSFP$1Z4N%h?V*o4a+t%2=WrQ%%y^+2!b_m6U0+S?3#PvrXtp3?wy@7qI*~(ziIW1yQ-=Cf&bqT zzf$8!(DD!QBmXPnO`QG%@hXB=*y0#H&`1OBCn(3!S&;h~o1w zn}KM9@vpk|?*ltuxdsaJG*H^2P6UcC1!N6%;@hrfxAjV|Tms^wfmw(=6}Zlt++8{P zNXz@zO?mqeC+Ms6Cw|kr(|#R4w!R%g2s%JI{CRo=M;CSYs{VwOfLvsR@7ScOQ`5<* zUQ(MZvX6Q*Q1NR>dwILLJ)e)qUAua}-xr&xN6yNDSM^I+nq0!eQdRIQ3Gbl$C9t7C zAhQ0Sgj_3H&Fj{lWjmp5{JFwvj+3Z3N2ic+C`-MvoVeK1&Ce#^zJ3DJY zgurynEzTyXePs2kpQV}!6OhSv*-$s5{m7iXK5A)t3PdO(+RT;_*Z`rqDXP?FI$1!B zTWbf*nwXX`VNxT3g3_9JR*4SWoBpi?71)@ljNbpoJUoZ`a#$|3e8s0^ty_?4lSn3q$sT|clzt_iJ(9tXpFw3s9t?pF)@^rFyz>f;YVT+Ebd|1=dqYQ|;6 zUTb;k1t!}wFZgiu1C=RkGfdFKqBz#!{0y`_{=e!w;MfiUH3$H}82JBI-%Snvp*6q{5qU7a@UWiTzBm7UtM?i<3#PQ5#-s2n_XJA=K?U@uT0rO1-A%8l@6oK{=3H%vt-A6#7jl1?&yRz9S@|JBSar#0y1a3 z-BElnxji>b-V`DX%*1jBPC~u-5kP3@11*fu9mSPSj6KCw;vGFm{}#cOHvaQaEzb03 z8)HV!Myi=3$v%HobCXE!08{ixly}J2@CTjzF3|~+>-ofacixo2iWmNMM+}#RVjlCX zPhths{2q4a-;37Ks%S2>)$}sq=$)m$*toi(d)A%izJtQ+xfv)F5oHVC-FoYfhI7u` zz7F5psM*LoGb7Wg+!25qbA$dL`NX4R%0OVnq1^SR=NVZ1>EE;iuZusD3z8VLWga5u&|3cJbRE z@B5p$RlmNgQ9`+@hLfwoo!f25Azy>%nL;W~bf zlk>|5=_n*6(T?2$u(HM(%dMrDcEP5r9Sq)t3?`2sdIze`P$Bw~&7fPR)Dk#|3Hh^L zhmdjl2p-%-LT1N{w(%Dz+Z+TEBN=c*WtH@ghDw2Ho-w{bg+hyWiei(?>_Lj|0jmMm zVfypkk(>dh_p&CB@Z58+d8NjO1fg^V~xKMK-P%DNb$ zOR}rl0=A9);Yl8QPFJa7S0@vN_xgX>`G-?oPM8!zM>gr0F`wGYLMKd-)A}hX(S7wJ z``PaxV-c4M-v3d!R@8!yK!5E?lEAsE ze_9t*48TO0tj;BN5YaPWmpqAP!9S`7WH26d$HnzsuwAst(`pmaGDtdg1N$6-QMx?? z+38yVmzZ#>hOSiU=LzLKHvj`+jx~+w*(B?lPx>Nuf~jytt^$Z(?rj2lK|mEWpDg>+ zq^6F)sIDTKgLabV$Je(4?$t+eTmUw1$*cLGA>`14BY7YtRps1*=$C~zWNN2p=*_PS znM$N8$!dD6J=AYZqD|~x`FezBthMqhd`al-6p_H5@ULm}VqU*V4@6ne`T2$SKv}M- zFVR}}Qd(dq>Z~c0zKnTBE028Dm=@q630(o;U=%YDl2l`m3 ze-vUvSngA9{0U9S>pE|aop@an+Y#Yvy8C@Pi+%TXc}O|hUoxR8W)mkx*y%Irxa7Em zdr!nOnenFCqBv97?@91c(5VI=?ee+Cv2ZfN0InwhrJ$w*f5G)6Sk=H#sjPjL28ioS zGIFXJ(@_2V-G}mxroP6)zrN8&007zzcr5a&94v&)o|?Qk?kN4}C-Ea4YEute&d2sVQ_Y}38L__08he0KeQK6#%njHev9RuOESOFVWO!+GJ z-AkF0d0G-7bEqzqs|KNjEw!He0DQI4=t$1DZ=N$J1k^26W~w8Z=mI5PD)P;tISB^O zjZaT^ainm0FJ~H2v+xnfRxG$G3dMc9ppa~c;0=Q_kYvwY@|Og6P=7V5GsYh`t$M}X z1+KEYR7WCqYm%*bDr>2e(->i3yK1&72WR!V0Z*Q}{Q@mrsam%a6{;wyuh+*ZeElp= zVX7h?8iP>b(m}OZh!N2Nk_`lJ#}*Ls`ljFLMs&>QeOt~3T}AFi79X>v%W@)^-h~r_ zBu^Of=A6IXAE282h*Ir**B4X+pqNvPhlM1 zm>nqOjPlExJ#;y2N(DW#y~E1$L%^Ncu=X>)YOdV3S*FfF# zbj?vM2B&3AeY_XblDguCB*b7DRCxvLW2QHe5vZ!xHSPbwFVZZb;argb0KBOGpUX%8 zIof1noTK?~)_5hw?=`w_2$I)IX$hP6cQRlUR!_( zx$N-TS@7qmP-8sh{`D;kp2<7!C-t%A8ZPvE+p>L~I zbMD!LhVf!K?gsi#A;}FRD6;?_y@Kn%c)almGN8A;vRxezIj$@)M3On(_+XYOBElEJ zMA*aU>8WtC148qF6r}+W9?-tvK@&{S%5}R_L35|HgO85#Dby@zg30@S^YHi5lG-qWAuICq{^zo5EXRNCp%i4wdMg&sWbVO%{QPc$XBmz??pqSUZd9R;xo3^37X1AhlpUg*>R>jS zwvUSIEVH58`{}T^ZJBEaPealcC*LbRIE77} z9iC3lCnaEzhX&qe7{*22dJSP6`7w;7YiqRDbH|HtjgYvK_-$|YZpN9QK>{Ckh)ru3 z$yx^Sj!nd4cd>K7h*R25&gCQ)07;dBnMEQf#sg&=0oew0iUBH$m>zCIltdfwg-W9M zLqofQvOR0_*o1qZHP~-nB!~f4SY+(*%H~H!o&rW2$V$6HU4o$ z{@*wWZ9U>#BuiRHn>#@QrX@-@rb?rSAT%F>*zG@?`=0k3f4W*HGncfe!#y`KltTsSa5aZP{88|wmPWIf~#<+=`- zdOY6ooeP@|ZCP8iJB`QyQ#OB}XkA1y3HcWmT-|-CgcR<53~H4*d*46eBovH}sP)bd zTXu14b~=-y=I^`-g&*c^PAZWmHnE zJ~K;X2#d|c&C*Hqf)H(@b>9>Q)o!$IO&kga9kB7V2pQxb3#l%D+v)oeE9DBYVT$!7$2@ zKr5?E;Znv6Q)jedhhfdd41pZ62$j;KNtO^*2ygosls98WQj4q8y#d*j0WRv4!L7q_ zd0wdl7UY6K1ry?rWO#UA*m?oJMB`RNI**E{fh1xSi|eJvr8a?kWigO@2jna9$r_wX zRxu_$Z*hER6z+>+2PER&_wL$7@}dcx!FNhK55d>>G@c}bY=Sa_bL3!C8n31qBb2JUyk$P)V)L9Dpz_paeYoF>?u z*1v(?t>O;45<_|kC7#=HFE6i%y}X(q&l_S%Ogn)*d*D#2;Fa>>2^>rQcRaFku+l!2 z51hdz4LD=xARGNOv&=(o^aoVQDTs^nfBUWBi6z;_5R+q2ibPaAVY9hIwS;F#Vo|Dx z-{NW-0G@KPvTqcZuXG^r%^wf6F)bMvT|wyZSP)5D|46$7c8`Pcr68xX2}%W~^7VcY zA%D1+%39jkZRy$VTv8MZSuE^|$T%h$pDp#aiddE-cn5$Dk1`-fL*mCS8|e4u`F z3S*sWTri^*_-q@NS1>^e1qf{3Ki)7)lM^ao?6l9Wtv@?1+dB_XDX0-GD;2@Bel!b8 z{CsiI3th|_*ck+OEk@=m)=dj~239ygj_;2oA|wJa2~V=~RmQ5(5U8m9Yuz+FYCU+| z#zP}|W$m|oN)AiR)3<=2qQbFvKOmAJadn0d--pCtOcZdC&~}3(&FuD{l1N2xBoayy z5Q==FnhUgOJ_6kBNbIpA%no#eCN@Xw#jh7_&e1#i+vf~S>7djMy`o^<-Rzk?R*p|O1z0NUbn-&E{;eN1Y&tON>LnSyoT`k}TneV(G!BA?>gdl6h!^%XiiBp-f8NfmXziXbSX~PF6xHB^uB1*Y zt24DQx4W$pu!pDLk(=`!BGVoFI+yHF4j^Wb87NWuU#l`UxJFOzau zN0h9;V~8Z;_Cv;l1=uN{Er%d->P$h+V}kBgBH$so`S(NY{jmc8-a}9t7&Hv$ud28l zdDA){sC*y(SlMlHQR%ZPt+dUP<8ph>5v4vy=QIPpW($}-CFy?LR%Y-*gLHJWlISFg zUC{6eUX^U_n>T$9S&7>Mkl5YWZE>iqTaT0o&4}4Zzmi!gf(ZgI(yJIpxZZJq+hhgR zOevN1=N8SSvSzD}>QCXC;-JYykszMMtsi?Bv&im&YFDQ|Y7c%Gog{yKKX7~;_ZirC zwH067vsuEuG-~X=T`Rzar&6+#*m?*R6XYSJl{t2|=02!8M_E8m=N`aYBd`DuL@0AC z3oRnA0HITjBBec@Xb!+j8xW0Nu!Jd=qQ&Cmz_`nW>Iq&7C*BqMK?@Ru9L*Ne&A^OdrI~;T(Sg4Gs5#iAH_q_x zw&j9yYA_^|#D>F*gW3zHj-Jc7WUJa!H^j{f_NdwATs~NV=ZjjGSwUJ^2c>Nrc8r~; z|H!c&zVpkbTpT>VCBJ9qhNjkTyMxo?|Hs%nMv2xe*`j6Jwr$(CZJWDn+qQP?vTfV8 zcG>o;?~M0OcfY>ljR&xjC}Vrh%hprfP<%n9f8i`4ig_CHHWRj z8#cCdM!IQl)WIg!v3nT;DeappL3+_B->rd8fi3e8exMtEL)V`V1WV32P~=1^vtvX$ zwjH@`>;RcZT-%HQqM1!_@pv1?OCxvX$I)<`7lMErSQHVAE?+lJ|GOv?xcNXL3bb zc&wpA$`7^=%Uecj!)I+NyXSSJK8>FOC8Mbv&my=0Q=r~H#Z{I+m;l9-3Xf0W*1z!N zvV>ctoqMfX2x%*TN7D&9ta=|6k76cVEjIC`AZMPVJL?(qf+;y~y2;H3Ei}Q42qt*F zaOQ*@wneXsgnzBSzv7+&MH z4!s#(YE6}xXC|- zu(iw8``*d|X^L`<-@#^51HQ%XcLNJX?s;JvL^(R?ExwQNzX>SBdBW+`ci72q7yz{T zUQgvFWb~nEMr36SO4tt2?th{4zb8d88lB-4%Dq@{Og2Uh3G?*F5rZWuUI6r&B9}4E zVW0xpq-=f3Sao_HO;y;-w8)dr7eRklJDM&Up(7xa7X!V-p9tD!ly}uHHfGQ(F)g-Z zJx`Zm#52%7Xq&bV+wC#{6)Bt~;1gMm5<_CtWee*GO+Kus8a-*sX|yYrA1P(0j{r^F z4^qXvgO1Vgv8?7EAwkBiMv9YTb^t!B-Lq7DepmW?pmBpfJ&rMli$-zz440QN-ILHi zwWl5iWH6oi3J6oMM(|+7Hx$!^`Js=>cFbx*#tptcV9IcYnOck+Gv(VYcxF%vTK@1o z2+u}2duH}%UnF-nhv`@C^`)!hkmdztt}@Pj`4^sR3yD(2=r9)%zlY`-gohQ(=1QC% zgW}C|Q{IPgvykb>T`IM8vUN2d2(_mn`fM_$6R74V)dEDNrL1DFe2&#p9Lv2>W4T7y zdOQno32rOsxs69h0$7*+rQ==2t zp_Z72{FLzuR&vutOVkaw%*D>IHu6rHbX+sD!u?c*v=`vvS+-e_F`*8f)~#%(vuJem5TC16qE!4+3C;1rs*kSzG*k ze*i{nP#C7lGxvulTm{D6U(HtAT!PKQzD1U2jwi~t*%mvSZ=nKH!uR&IVd&sKG?14L z6DYH#=0%kjslhqm)Hwex;7RDrWH@WGF#E}&nrg&>>Jf|k;*eDIQzd((ZRp-X_IZG_ z-EGzCFB;8X7EWu_mw>dfQq#D?yoQD8uiPIfanL}m!NFhO4vPCV#mWJrAQ)FxqgSUt zNs0D1!y4qVF)$A6m4L+eg74gH<)qHncjoSF1rn!HwVf3-8I$zT#d6)biZ!d^@MK#w zgZ&*&*+h*@;U>)YCTW@k+i|xRJ*_B>fg$nYmUL8k=eV$y`tUUo+PZF8|`f|CPD!hJN7hBtxM2Hy2*~Ke+HY3v*_EwZt*P z0D*!_+IV65q02tmA1)m4e`c`6r|9a)wiSqyx{mQ=3EuvwR(S2{! zDp#ux+MDy1_?_?vQ4;F&!tBPdcELUC(Nmgiogyj=fzd+RiX21c?*4=Pbi45`DtrV9 z<6;76u>rWx63}u(MPhXw-}rYZcC6t2UMCo(B1mRkg-FM5y9PaXN_jpG$$3Z<8B4k( zaBX5^r7rA$*l^DuHr%Dx^dB~yUw;M9=rUk>f2J`5x|w}&Asx{g=7$Z(R)H#ia$|pb`0lGr`tJZbVviX_2kK|8Z7CC=EB+WE^9_^P#r{0J6>(u@c zmY@ox%d3lHYEHSG04eD@?lMhhCQ?H`jw=qjm^FO16F+I4;!wZ*ZFz>y0N4G z`MH12`VSl4n8BKvI*m{_e}yZW_>q016j;C?VBLF(fO<~4Zo$&2R5OruJ(HhxSVNKK zkepY-BV_Ai$%$(%oP6u}4;}t6O4$*$PFkoy1k7f`)pG6l7-PQ6o7p>xQKjti;B| zWYp0pDOrE2(ClhHXU1YhjMqkEXF zkgHEZm&oatKfKRzK&8bw=!9=vrW6wu3=@!Mtbj5_Ajbzh9}eT zfTeh}t!$eHa~TJvNUPkTd8jgE$krY#W60(Dq266`Mo|eR*BP4{B}Y_M+Pq^8q{W)X z_&A5)J%|P8H<){0BT-Lb2D;s06duj-uJ2dkehQL>;ewyDJlvM^b~OIusMA1X#Sn6= zgh=ykdK^s_0<1m`KHiHK2s1_Zyso6XDx_oJhM34c$VmL{;W+;2_X2QM{;1KOPT8TC zDLl-dly89l>GF0bU|QclE^qgLb$L&Ve_TFUQGP=WWn?Ge1rA zo~0)LTtd%({YkWF78@5Qj`+YFMP;TnK02OWnE+ov*i&kaA|H`3fgp_OL@(OGua%Xj zY$Yn91*j)tqS7)p5;@pj{rEf#9(F+ZjYD8(!DUL>y8UR(v&@bVSGt7IImR1|_&ZhJ ztb)FxW2q|X^~_D1P#bV=%%v$hvC9wIR!|8JVxNXs-A%TuOGd-MW3;igYAuDll6LgQ zKfgO^;A`dSyT7@GlwAo>62Fd98OTdP(%?~BnvKdd0}P4e6ZaRmgJ?hEqd5~mI} z-gae*0M7T?D5~}Q{d5)R$y;CPIL1N!&}Y5~5hGPYGW$r(W~LVpc#trElhEb?X^YCq z1p^Z@!bM%7vi$Vmy&?$Nb(8nG3>=@2Y!=|A6bnagI=_)2W#m?1A+$!#wGDE0G37_x# zeq-#8R3 z!YG-=P`*sC{RC`_ach~%gVTxfjDjwnFzh2d4mBCm3SF|(yQ>rJ?no&}Ws#7yMOXrX zAtSD-TZbTHRtwWSF8FHY%7tr#!0_-x0I=xNoJ~9iivXnQ-!L7bTp@l81Qi5sP}5sI zIj`9bUyHOe?IAqVLJNVs8NYZIG-f!5rrzEH?~T+ira9oh9PuXGxofs^<~KH7nDM%? zzkCrw=ZfZ;!l#bj`iyU_1vlvm1K49ew+#Dy-h^nTS*|{r_USHu3f7K?mR*=#nTbJk zs7^HOotblRzyF))nmr4VZkGjKa5^Laz|K$CKKlQbWKfotl#%%dGc>mBHpUUV*>~MF zI0S6V3tbYw`rTub9xxn`h@Ik_+5blBC}PvPuWgm!v0E zRH~vUp&ePDLZ;k2uNG0Ni;2s&u2#s%RGm{ZG_-L^tqyXlCU(@s@_|%!^61Ni?x(2c zVFRkz+J0+QWHZZ6T76{~tZsdjLaUM<0bf(2*X0ufZVOu;C`f$}NvkGdpfWUk2DD$H zHsCv_#pDoRY)E(2RZaB~d^)Ri5JE8Bv~=rDHVthaP4!ZD7F}?hzwrH-YBH;w5j|XV zUwesP1;q$a)DroOfse?ZsYAIW1;&~>hWA()7+Gj55=aJlvBG6BeQaJvjyZIa(JJn} z?ci{QQM_yhpxoCwb#0V!_UJ|tE!qv_>w=X;>&rkZro zmTAso;lIyE_z%Cj>Bto$Ui zg>mnJ{d_eO*-u{P^H#%SLfSp39(REvrgPLO+XljVKJ1G&LZpB};7m-pzL9$KD-HpwG27FCV)&! z^YF4)roPtBJxOC?_gA1msqhtgWA$=1v|5%lJ_W zK?G?^i7l>>gn9QGhF>XQJMgsamBD_9V}E~hK@$fuI=lEbyby@M%nt}uu65%1jewF^ zA}{Sn!9)SoQiaGU#Lx)$7mfh;)e{Q}LMIh$`SjFJLN!t`h(jyKi)VOZ?s*@SmAN-U z6iY_xY~6D!kjK05nN^G{Yy+9u!6Kvj7g3M264QPU5BEpmA~9clZPsm$aRe3XlXriV^uZ#L)Ln9Pp~;sgH^iMtf){3m|2(k> z*4BVi>?WH`A=!_=PxYX%%qV_WVjKGB9Cb9)2Z4zR3wN!Mwv_`JRxi|;8$*&zN!@US zC@r5!Fa||^F|H9eIxjo7lb|e&YNjuh`wEsM-XbLn#KQwwxpj4BmKEUIs#G(BvJ|cDZk_idA*b|lf*I(oe(p$M91F=A0rl$JK4s_lnDf+SfrPl zS`aDNwx{$$?xI-U;yH@CDS`WPHr0MPTO!luJX-MJw=0Bz6`2?Yh)~Bl-WH!cJChCY zm>%(SphmzFMR0dh>ZzT-K^1TPD*QiXP#-9W?a1+48F@VM`DdFR~$M*3u{J98{BytAUKrkBi^$4b9pN~0<@b(4nIWFb$P zKN_QQX)A$|@Z-{3RO|aITriVVXF%!obBxyAYUYE`mmIp3gG9jCHRn!vq_aV;1hxEt z@wTIAF4EMil-6g|ewSVGWf2jqW3O-ag#Wc~(G%|P`WWor&1bigus9;ivR!iTp9 z4cdKDgd$|y0=+J8!Bb@m6NVb4?TsZ5rq`q1`q&&vt#D(IRt{^@JB1ae2t$uf5y5Ll zjbbSk^t*)~h(dgrJ&s35Qs_}D%|?EY_x#HInbRfaLJ*gpRXs9D1`)N;MI`8@v02;k zcGMFBzpyAhE|gZFM^mu1)6vkQaL~pbD8DGD(eF?92`w_qB#vK6Q-^zodYqQ!K7ufT zs`A>&qbVrY0uus$af>@Cx`^5TRiPbaqDKT0okaDA0xjYurjcrra!d?yCuEoia}xz7 zEzBe{ELhC`7(>VeQube)J(V} zt&-dt@&49mX#qxmR*F$^1lBG5TKBLd__U~vqCxFLoXP3VoZe7kwMz67HD*bxs#8=T z@dCe-?YOD~*cV~)a)gjqF)b;^TQ~&v3Q?{JuQw1$P-UWt?r#s)yb@ZX@MII_+tcHg zsC_uwxp1)H@OrvBDE@IaSuO&jKdD(Avt6HOB@_bj!Tu~7Fi`wOtABWVAehP`P=;7f z9Lha1`g|2VnP655WYZCZM9d+ajlzqpvZE?Czh(VVj?N2E)s&9US9UlOfj`| zN=fF^-00Awh8~ZM`0|j|Z>1bF%AV%ArByKBURm3s8~wQ0R~I>~P8D_DYcr@vQJGM79X0Nx`qY8|CU%?Ke6*cZMsC^)c1!YUImd2>lD{HC72;Tr}rTG*0D!wh+v(ONarVubLW9_{szy%?%U zV=HPalD0JRBnN1EX`K0($uuh$%9bR7MFe7N>fnOA3#(QDmXs=nBr!|^wZXh~W;8#z z`F%BTcHJ|)$PByzd}CjOw9W*hc7s3gXQX?}>EjzV5Cty{>e5+jXBGqrabV#K(dqlj&;?bRtG| zI&)u=G#Zxbi7VI0PM$xb;F3?MlxX*wI#w|uhrwo+5(qcKXtj2mdhQZeJjj)hS|`a0 z+!Ult@GSLd)YQOoyLi#K6z^;q*glBez9`P6L2bDsp-7>j5J3s$;3B^gJ(@j(huQU< zV0d`Zz#;@}QI;BeVb=>~L3UL!45qFMb)H0$T{iHz3u`?n%AAngj=a zVQUvaAJteNSW<$YOGy42lazirha~+?uoyl-J7Nr8*y~0At-7Qo7vyPSH=w-}@~IgO z)7|&~_XzyoV%5n1`!Z)_Y4_g*t3SPPb>&pa+Btv9s9j(I0Pz3M3k*$6Xq~MsZEWbQ zoJ-VY?KjyFy0CBj((}PBbv3CxT@nhRH(X_NplMLo`kX6!hLS6M5hn3Mn?87*y-!n*Dj>aU>np;{rfW3O{MHMeP zw98dI4|eZI0Qa2|K`oU1<1BK4pFk$>yP|XI5V$tQ?HRs^gMipP6q$W+*K9x z95-7#01{_;88fRlWHF?|HltU?i?d;0?oAYkeEwTWzptRYn29f-Wf%vk3&giVfnC05 zUgF+`&?d!y7WAX~2v>_-W!yT{)lZ2@{1TxwWwgfe`~892H}CT5;_5JTRrqw5RO6#4 z746`+%iLj@-EX8XPuKXK8knpmi3Jh2AiY)0H)2amIaAr#>5^9;MEZfCM)T5U&O4lb zIa;owD~9e)n&KrRxiwKsEZf1(QozXYWz$$Sw7guL9=;xLRv+PoZRPG8fM_=W#0mHX zWe#4hSR{?_B35`TJa)0O)){}vUy()r6bKFvi_94h40t*C;OV`_^wDSrSFb zTK<3qPb_fm7mz~B>18x5a^ZkrHtmT3n4Q9(-$#rnY3!EXTe1JF*R@?Qoy8#4+T@8+ zf@gSOMU~_b=T6i54XanwUD|4%^A1oeN@%@X+3!6uhp#@$cUnM>Qm@V9@>@g}ZoS>S z$dqD`w+x0A09fd{c9#mbdRo5v6zm3_FlscitC9+9kN*)_GAAdLZ&)$sE-fN*y3tTU+e5Z(}KP7i-s$2_%VV7lQ zr0Fmq|6oa_JMbDP!=s=`(hP%0DnbvuYZmKq=#`UQq?X}okPsKXk3`8ds>k#Y^)0gA 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 diff --git a/dist/tidyfactor-doc/.tidyfactor b/dist/tidyfactor-doc/.tidyfactor deleted file mode 100644 index 7b7e811..0000000 --- a/dist/tidyfactor-doc/.tidyfactor +++ /dev/null @@ -1,16 +0,0 @@ -{ - "name": "tidyfactor-doc", - "version": "1.5.0", - "category": "development", - "description": "TidyFactor Doc โ€” Code Documentation Builder & Dual-Engine Publishing Platform (MkDocs Material & Docsify) for AI Coding Agents", - "repository": "https://github.com/TidyFactor/Doc", - "npm": "@alwkala/tidyfactor-doc", - "compatibility": [ - "antigravity", - "claude-code", - "cursor", - "codex", - "windsurf" - ], - "license": "Apache-2.0" -} diff --git a/dist/tidyfactor-doc/AGENTS.md b/dist/tidyfactor-doc/AGENTS.md deleted file mode 100644 index 01ee9e5..0000000 --- a/dist/tidyfactor-doc/AGENTS.md +++ /dev/null @@ -1,10 +0,0 @@ -# AGENTS.md โ€” TidyFactor Doc Governance Rules - -This file governs all AI coding agents working on or with `tidyfactor-doc`. - -## Core Invariants -1. **SSOT Rule:** `tidyfactor-doc/` in Skills-LAB is the single source of truth. -2. **Docs in `/docs` Only:** Generated documentation artifacts MUST live under `/docs` (except root `README.md`). -3. **No Assumed Details:** `generate` never invents facts or env vars not gathered during `collect`. -4. **Docsify Persistence:** Always generate `alias: { '/.*/_sidebar.md': '/_sidebar.md' }` and root-relative paths. -5. **SemVer SSOT:** All changes must bump version and update `CHANGELOG.md`. diff --git a/dist/tidyfactor-doc/CHANGELOG.md b/dist/tidyfactor-doc/CHANGELOG.md deleted file mode 100644 index bdae747..0000000 --- a/dist/tidyfactor-doc/CHANGELOG.md +++ /dev/null @@ -1,89 +0,0 @@ -# CHANGELOG โ€” TidyFactor Doc - -All notable changes to `tidyfactor-doc` will be documented in this file. -This project adheres to [Semantic Versioning](https://semver.org/). - -## [1.5.0] - 2026-09-02 - -### ๐Ÿง  Added โ€” Contextual Decision Layer (CDL v1.1.0) & Declarative Decision Gates -- **Declarative Decision Gates (`manifest.json`)**: Added formal `decision_gates[]` declaration for the `init` command conforming to manifest schema v1.1.0, defining `doc_engine`, `target_scope`, and `audience_persona` with `track_staleness: true`. -- **Context Delta Resolution Engine (`references/workflows/collect.md`)**: Upgraded collect workflow to evaluate the mechanical Delta formula: - $$\text{Unknowns} = \text{Required Decisions} - (\text{Discovered Facts} \cup \text{Brain KIs})$$ -- **Interactive Disclosure & User Agency First**: Surfacing all genuine Unknowns interactively with structured options and recommendations. -- **Anti-Dual-Write Architecture**: Enforcing local markdown files under `docs/` as sole SSOT, with one-way outbound cloud sync via `--sync-brain`. - ---- - -## [1.4.0] - 2026-09-02 - -### ๐Ÿง  Added โ€” Sovereign Brain MCP Integration, Hygiene Auditor & Fail-Open Protocol -- **Brain Integration Contract (`references/memory/20-brain-baas-integration.md`)**: Sovereign self-hosted architecture and Documentation Knowledge Item (KI) payload schemas. -- **Fail-Open Active Discovery (`references/workflows/collect.md`)**: Local workspace auto-sensing first, optional Brain MCP context acceleration (`search_knowledge_base`) when active, and instant 0ms silent fallback. -- **Runtime Tooling Manifest (`manifest.json`)**: Declared portable `audit_docs` tool conforming to `skill-manifest.tools.schema.json` with `"skill_root_anchor": "self"`. -- **Documentation Quality & Hygiene Auditor (`scripts/audit_docs.py`)**: Sub-second AST and pattern scanner detecting sensitive credentials leaks, passwords, private tokens, and banned absolute workstation URLs. -- **Tooling Scope & Anti-Triggers**: Enriched `SKILL.md` with explicit Rule 10 Tooling Scope and anti-triggers. - ---- - -## [1.3.0] - 2026-08-29 - -### Added - Global Multi-Tier & Multi-Language Documentation Architecture -- **Rule 13 Implementation**: Two-tier documentation separation between Canonical Technical Documentation (`README.md` SSOT) and First-Class Market Localizations. -- **Universal Multi-Language Switcher**: Standardized 8-language switcher navigation bar across all documentation files (`EN`, `AR`, `FA`, `ES`, `PT`, `ZH`, `DE`, `FR`). -- **First-Class Localized Developer Adoption Guides**: `README.es.md`, `README.pt.md`, `README.fa.md`, `README.zh.md`, `README.de.md`, `README.fr.md`. -- **Automated Validation & Packaging**: Updated `tools/build-skill.js` and `tools/validate_skill.py`. - -## [1.2.0] - 2026-08-25 - -### Added -- **MkDocs Material Publishing Engine**: - - Full static HTML compilation track for high-performance production doc portals. - - Native bilingual parallel build support (`/` and `/ar/`) via `mkdocs-static-i18n`. - - Built-in Lunr.js offline search indexing (English + Arabic tokenization). - - Neo-Brutalist luxury styling tokens (`tidyfactor-light` & `tidyfactor-dark`) via `stylesheets/extra.css`. - - macOS-style terminal dots on highlighted code blocks with line spans. - - GitHub-style alert callout transformer (`[!IMPORTANT]`, `[!NOTE]`, `[!WARNING]`, `[!TIP]`) via `javascripts/extra.js`. - - Local Apache subfolder transparent routing via `.htaccess`. -- **Interactive Engine Selector Command (`site`)**: - - Interactive evaluation matrix in `references/commands/site.md` and `references/memory/site-engines.md`. - - Auto-detection of local Python/pip environment vs. zero-build CDN requirements. - - Clear user choice and recommendation guidance between MkDocs Material and Docsify. -- **Dedicated Direct Commands**: - - `mkdocs`: Direct entry point for MkDocs Material static portal compilation. - - `docsify`: Direct entry point for Docsify zero-build lightweight SPA. -- **New Workflows & Memory Specs**: - - `references/workflows/mkdocs.md`: End-to-end scaffolding, building, and validation checklist. - - `references/memory/mkdocs-config.md`: Master `mkdocs.yml` schema, theme configuration, and i18n rules. - - `references/memory/site-engines.md`: Technical comparison between Docsify and MkDocs Material. - ---- - -## [1.1.0] - 2026-08-20 - -### Added -- **Security Sanitization Constraint (Zero Sensitive Data Leakage)**: - - Enforced strict automated redaction of sensitive credentials across all workflows and memory files. - - Prohibited real API keys, passwords, database credentials, secret auth tokens, and private server IP addresses from leaking into `/docs`. - - Added safe placeholder standard replacements table in `references/memory/collection-sources.md` (RFC 5737 doc IP ranges, dummy token formats). -- **Clean Relative Links Constraint (Clean Relative Links Only)**: - - Prohibited local machine URLs (`file:///C:/...`, `file:c:`, and absolute workstation paths) in all generated documentation. - - Mandated clean relative markdown links (`./docs/README.md`, `../api/project.md`) and standard public URLs. -- **Workflow & Memory Hardening**: - - Updated `collect.md`, `generate-api.md`, `generate-guide.md`, `generate-readme.md`, `generate-inline.md`, and `docsify.md` with explicit validation checkboxes for zero credential leaks and clean link paths. - - Updated `doc-templates.md` to showcase secure dummy placeholders in environment variable tables and relative link cross-references. - - Added automated build pipeline script (`tools/build-skill.js`) for packaging and multi-target synchronization. - ---- - -## [1.0.0] - 2026-08-19 - -### Added -- Initial canonical release of `tidyfactor-doc` under the TidyFactor Skills-LAB ecosystem. -- Standard 4-command router architecture in `SKILL.md`: - - `init`: Scaffolds standard `/docs` folder structure and manifest. - - `collect`: Non-destructive codebase analysis for PHP, TS/JS, and React/Next stacks. - - `generate`: Produces API references, developer setup guides, inline docblocks, and READMEs. - - `docsify`: Generates responsive Docsify documentation websites with persistent subfolder sidebar routing. -- Stack-specific memory rules for PHP 8, TypeScript, JavaScript, and React/Vue/Next component docs. -- Full cross-agent compatibility across Google Antigravity, Claude Code, Cursor, Codex, and Windsurf. -- Packaging as `@tidyfactor/doc` under Apache License 2.0. diff --git a/dist/tidyfactor-doc/LICENSE b/dist/tidyfactor-doc/LICENSE deleted file mode 100644 index 8ea93e1..0000000 --- a/dist/tidyfactor-doc/LICENSE +++ /dev/null @@ -1,17 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - Copyright 2026 TidyFactor Ecosystem & Alwkala Digital Agency (https://alwkala.com) - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/dist/tidyfactor-doc/README.ar.md b/dist/tidyfactor-doc/README.ar.md deleted file mode 100644 index c82a45c..0000000 --- a/dist/tidyfactor-doc/README.ar.md +++ /dev/null @@ -1,180 +0,0 @@ -

- -# ๐Ÿ“š TidyFactor Doc `v1.3.0` -### ู…ุญุฑูƒ ุงุณุชู‚ุฑุงุก ุงู„ุฃูƒูˆุงุฏ ุงู„ุจุฑู…ุฌูŠุฉุŒ ูˆุชูˆู„ูŠุฏ ู…ุฑุงุฌุน ุงู„ู€ APIุŒ ูˆู…ู†ุตุฉ ุงู„ู†ุดุฑ ุงู„ู…ุฒุฏูˆุฌุฉ (MkDocs Material ูˆ Docsify) - -**ุจู†ุงุก ุชูˆุซูŠู‚ุงุช ูู†ูŠุฉ ุฏู‚ูŠู‚ุฉุŒ ู…ุณุชุฏุงู…ุฉุŒ ุขู…ู†ุฉุŒ ูˆู‚ุงุจู„ุฉ ู„ู„ุชุตูุญ ู„ุนุตุฑ ุงู„ุชุนุงูˆู† ุจูŠู† ุงู„ู…ุทูˆุฑูŠู† ูˆูˆูƒู„ุงุก ุงู„ุฐูƒุงุก ุงู„ุงุตุทู†ุงุนูŠ.** - -[![ุญุฒู…ุฉ NPM](https://img.shields.io/npm/v/@tidyfactor/doc.svg?style=for-the-badge&color=4F46E5)](https://www.npmjs.com/package/@tidyfactor/doc) -[![ุงู„ุชุฑุฎูŠุต: Apache 2.0](https://img.shields.io/badge/License-Apache%202.0-blue.svg?style=for-the-badge)](LICENSE) -[![GitHub](https://img.shields.io/badge/GitHub-TidyFactor%2FDoc-181717.svg?style=for-the-badge&logo=github)](https://github.com/TidyFactor/Doc) -[![ุญู…ุงูŠุฉ ุงู„ุจูŠุงู†ุงุช ูˆุงู„ุฎุตูˆุตูŠุฉ](https://img.shields.io/badge/Security-Redaction%20Certified-emerald.svg?style=for-the-badge)](#-ุถู…ุงู†ุงุช-ุงู„ุฃู…ุงู†-ูˆุญุฌุจ-ุงู„ุจูŠุงู†ุงุช-ุงู„ุญุณุงุณุฉ) -[![ุฑูˆุงุจุท ู†ุธูŠูุฉ ูˆู†ุณุจูŠุฉ](https://img.shields.io/badge/Links-Clean%20%26%20Relative-cyan.svg?style=for-the-badge)](#-ู…ุนุงูŠูŠุฑ-ุงู„ุฑูˆุงุจุท-ุงู„ู†ุณุจูŠุฉ-ูˆุงู„ุชุตูุญ-ุงู„ู†ุธูŠู) -[![ุชูˆุงูู‚ ุดุงู…ู„ ู…ุน ูˆูƒู„ุงุก ุงู„ุฐูƒุงุก ุงู„ุงุตุทู†ุงุนูŠ](https://img.shields.io/badge/AI%20Agents-Universal%20Compatibility-4285F4.svg?style=for-the-badge)](README.md) - -[๐ŸŒ ุงู„ู…ูˆู‚ุน ุงู„ุฑุณู…ูŠ](https://tidyfactor.com/) โ€ข [๐Ÿ“š ู…ุฑูƒุฒ ุงู„ุชูˆุซูŠู‚](https://tidyfactor.com/documentation) โ€ข [๐Ÿค ุงู„ุดุฑูŠูƒ (ุงู„ูˆูƒุงู„ุฉ)](https://alwkala.com/) โ€ข [โšก ุณุฌู„ ุงู„ุฃูˆุงู…ุฑ](#-ุณุฌู„-ุงู„ุฃูˆุงู…ุฑ-ูˆู…ุณุงุฑุงุช-ุงู„ุชูˆุซูŠู‚-ุงู„ุฃุฑุจุนุฉ) โ€ข [๐Ÿ›ก๏ธ ุงู„ุถู…ุงู†ุงุช ุงู„ุฃู…ู†ูŠุฉ](#-ุถู…ุงู†ุงุช-ุงู„ุฃู…ุงู†-ูˆุญุฌุจ-ุงู„ุจูŠุงู†ุงุช-ุงู„ุญุณุงุณุฉ) โ€ข [๐Ÿ“– ุงู„ู†ุณุฎุฉ ุงู„ุฅู†ุฌู„ูŠุฒูŠุฉ (English)](README.md) - -

- -

- TidyFactor Doc Hero Banner -

- -
- ---- - -> [!NOTE] -> **TidyFactor Doc** ู‡ูˆ ู…ุญุฑูƒ ุญุชู…ูŠ ู„ุจู†ุงุก ุงู„ุชูˆุซูŠู‚ุงุช ุงู„ูู†ูŠุฉ ูˆู…ูˆุงู‚ุน Docsify ุงู„ุชูุงุนู„ูŠุฉ ู…ุฎุตุต ู„ูˆูƒู„ุงุก ุงู„ุจุฑู…ุฌุฉ ุงู„ุฐูƒูŠุฉ (*Google Antigravity, Claude Code, Cursor, Codex, Windsurf*). ูŠู‚ูˆู… ุจุงุณุชู‚ุฑุงุก ู‚ูˆุงุนุฏ ุงู„ุฃูƒูˆุงุฏ ูˆุงู„ู…ุดุงุฑูŠุน ุงู„ุจุฑู…ุฌูŠุฉ ุจุฏู‚ุฉ ุนุจุฑ ูุญุต ุดุฌุฑุฉ ุงู„ุชุนู„ูŠู…ุงุช ุงู„ุจุฑู…ุฌูŠุฉุŒ ูˆุชุงุฑูŠุฎ ุงู„ุชุนุฏูŠู„ุงุช ููŠ GitุŒ ูˆู…ุชุบูŠุฑุงุช ุจูŠุฆุฉ ุงู„ุชุดุบูŠู„ุŒ ูˆุฃู†ู…ุงุท ู…ุนุงู„ุฌุฉ ุงู„ุฃุฎุทุงุกุŒ ู„ูŠู†ุชุฌ ู…ุฑุงูƒุฒ ุชูˆุซูŠู‚ ู…ุชูƒุงู…ู„ุฉ ุชุญุช ู…ุฌู„ุฏ `/docs` ุจุฏูˆู† ุฃูŠ ุชุณุฑูŠุจ ู„ู„ุจูŠุงู†ุงุช ุงู„ุญุณุงุณุฉ ุฃูˆ ุฑูˆุงุจุท ู…ุญู„ูŠุฉ ู…ุนุทูˆุจุฉ. - ---- - -## ๐ŸŒŸ ุงู„ู‚ูŠู…ุฉ ุงู„ู…ุถุงูุฉ ูˆู„ู…ุงุฐุง TidyFactor DocุŸ - -| ู„ู„ู…ุทูˆุฑูŠู† ูˆู‚ุงุฏุฉ ุงู„ูุฑู‚ ุงู„ุชู‚ู†ูŠุฉ | ู„ูˆูƒู„ุงุก ุงู„ุจุฑู…ุฌุฉ ุงู„ุฐูƒูŠุฉ (AI Agents) | ู„ู„ู…ุดุงุฑูŠุน ุงู„ุจุฑู…ุฌูŠุฉ ูˆุงู„ุดุฑูƒุงุช | -|---|---|---| -| **ุงู†ุนุฏุงู… ุงู„ูƒุชุงุจุฉ ุงู„ูŠุฏูˆูŠุฉ**: ุงุณุชุฎุฑุงุฌ ุชู„ู‚ุงุฆูŠ ู„ู…ุนู…ุงุฑูŠุฉ ุงู„ู…ุดุฑูˆุนุŒ ูˆุชูˆุงู‚ูŠุน ุงู„ู€ APIุŒ ูˆุฎุทูˆุงุช ุงู„ุชุซุจูŠุช ู…ุจุงุดุฑุฉ ู…ู† ุงู„ูƒูˆุฏ ุงู„ู…ุตุฏุฑูŠ. | **ุชูˆุฌูŠู‡ ู…ูˆูุฑ ู„ู„ุฑู…ูˆุฒ (Tokens)**: ู…ูˆุฌู‡ `SKILL.md` ุฐูƒูŠ (~350 ุฑู…ุฒุงู‹) ูŠุญู…ู‘ู„ ู…ุณุงุฑ ุงู„ุนู…ู„ ูˆุณูŠุงู‚ ุงู„ุฐุงูƒุฑุฉ ุงู„ู…ุทู„ูˆุจ ูู‚ุท. | **ู…ูˆู‚ุน Docsify ููˆุฑูŠ**: ุฃู…ุฑ ูˆุงุญุฏ ูŠุญูˆู„ ู…ุฌู„ุฏ `/docs` ุฅู„ู‰ ุจูˆุงุจุฉ ุชูˆุซูŠู‚ ูˆูŠุจ ุชูุงุนู„ูŠุฉ ุณุฑูŠุนุฉ ูˆู…ุฒูˆุฏุฉ ุจู…ุญุฑูƒ ุจุญุซ ููˆุฑูŠ. | -| **ู…ู†ุน ุชุณุฑูŠุจ ุงู„ุจูŠุงู†ุงุช ุงู„ุณุฑูŠุฉ**: ุญุฌุจ ูˆุชู†ู‚ูŠุญ ุชู„ู‚ุงุฆูŠ ู„ู…ูุงุชูŠุญ APIุŒ ูˆูƒู„ู…ุงุช ุงู„ู…ุฑูˆุฑุŒ ูˆุจูŠุงู†ุงุช ู‚ูˆุงุนุฏ ุงู„ุจูŠุงู†ุงุชุŒ ูˆุนู†ุงูˆูŠู† IP. | **ุงู„ุงุนุชู…ุงุฏ ุนู„ู‰ ุงู„ุญู‚ุงุฆู‚ ูู‚ุท**: ู…ู†ุน ุงุฎุชู„ุงู‚ ุฃูŠ ุฏูˆุงู„ ุฃูˆ ู…ุนู„ู…ุงุช ุบูŠุฑ ู…ูˆุฌูˆุฏุฉุ› ูƒู„ ุญู‚ูŠู‚ุฉ ู…ูˆุซู‚ุฉ ู…ุณุชู†ุฏุฉ ู„ู†ุชุงุฆุฌ ุงู„ูุญุต. | **ุฏุนู… ู„ุบุงุช ู…ุชุนุฏุฏุฉ (Polyglot)**: ู‚ูˆุงู„ุจ ุฌุงู‡ุฒุฉ ู„ู€ PHP 8+ุŒ ูˆTypeScriptุŒ ูˆJavaScript ES ModulesุŒ ูˆู…ูƒูˆู†ุงุช React/Vue/Next. | -| **ุฑูˆุงุจุท ู†ุณุจูŠุฉ ู†ุธูŠูุฉ**: ุฅุฒุงู„ุฉ ุชุงู…ุฉ ู„ุฑูˆุงุจุท `file:///` ูˆุงู„ู…ุณุงุฑุงุช ุงู„ู…ุทู„ู‚ุฉ (`C:\...`) ู„ุถู…ุงู† ุนู…ู„ ุงู„ุชูˆุซูŠู‚ ููŠ ุฃูŠ ุจูŠุฆุฉ. | **ุชุญู‚ู‚ ุญุชู…ูŠ ุตุงุฑู…**: ูƒู„ ู…ุณุงุฑ ุนู…ู„ ูŠู…ุชู„ูƒ ู‚ุงุฆู…ุฉ ุชุฏู‚ูŠู‚ ูˆุชุชุจุน ุขู„ูŠ ู„ู„ุญุงู„ุฉ ููŠ `docs/.doc-manifest.json`. | **ุฏุนู… ุฃุตูŠู„ ู„ู„ุบุฉ ุงู„ุนุฑุจูŠุฉ**: ุงุชุฌุงู‡ RTL ู…ุฏู…ุฌ ูˆุชูˆุงูู‚ ุทุจุงุนูŠ ูุงุฎุฑ (ุฎุทูˆุท Cairo ูˆTajawal ู…ุน Inter). | - ---- - -## ๐Ÿ”„ ุฏูˆุฑุฉ ุญูŠุงุฉ ุงู„ุชูˆุซูŠู‚ ุฐุงุช ุงู„ู€ 4 ู…ุฑุงุญู„ - -ุชุชุจุน ุงู„ู…ู‡ุงุฑุฉ ู…ุณุงุฑุงู‹ ุชุณู„ุณู„ูŠุงู‹ ุญุชู…ูŠุงู‹ ู…ู† 4 ู…ุฑุงุญู„: - -```mermaid -graph LR - P1["1. ุงู„ุชุฌู‡ูŠุฒ (Init)"] --> P2["2. ุงู„ุงุณุชู‚ุฑุงุก (Collect)"] - P2 --> P3["3. ุงู„ุชูˆู„ูŠุฏ (Generate)"] - P3 --> P4["4. ุงู„ู†ุดุฑ (Docsify)"] -``` - -``` -[ ุงู„ู…ุฑุญู„ุฉ 1: init ] โ”€โ”€โ”€> ุฅู†ุดุงุก ู‡ูŠูƒู„ ู…ุฌู„ุฏ /docs ูˆู…ู„ู ุงู„ุชุชุจุน .doc-manifest.json - โ”‚ -[ ุงู„ู…ุฑุญู„ุฉ 2: collect ] โ”€> ุงุณุชู‚ุฑุงุก ุงู„ุฃุจุนุงุฏ ุงู„ู€ 5 (ุงู„ูƒูˆุฏุŒ ุชุงุฑูŠุฎ GitุŒ ุจูŠุฆุฉ ุงู„ุชุดุบูŠู„ุŒ ุงู„ุฌู…ู‡ูˆุฑุŒ ุงู„ุฃุฎุทุงุก) ูˆุญูุธู‡ุง ููŠ docs/.collected/ - โ”‚ -[ ุงู„ู…ุฑุญู„ุฉ 3: generate ] โ”€> ุฅู†ุชุงุฌ ู…ุฑุงุฌุน APIุŒ ุงู„ุฃุฏู„ุฉ ุงู„ูู†ูŠุฉุŒ ุงู„ุชุนู„ูŠู‚ุงุช ุงู„ุจุฑู…ุฌูŠุฉุŒ ุฃูˆ ู…ู„ู README ู…ู† ุงู„ุญู‚ุงุฆู‚ ุงู„ู…ุณุชู‚ุฑุฃุฉ - โ”‚ -[ ุงู„ู…ุฑุญู„ุฉ 4: docsify ] โ”€โ”€> ุชุฌู…ูŠุน index.html ูˆ_sidebar.md ู„ู„ุนุฑุถ ุงู„ู…ุจุงุดุฑ ููŠ ุงู„ู…ุชุตูุญ ูˆุงู„ุงุณุชุถุงูุฉ ุงู„ุซุงุจุชุฉ -``` - ---- - -## ๐Ÿ›๏ธ ุณุฌู„ ุงู„ุฃูˆุงู…ุฑ ูˆู…ุณุงุฑุงุช ุงู„ุชูˆุซูŠู‚ ุงู„ุฃุฑุจุนุฉ - -| ู†ูŠุฉ ุงู„ู…ุทูˆุฑ ูˆุทู„ุจ ุงู„ู…ุณุชุฎุฏู… | ุงู„ุฃู…ุฑ | ู…ุณุงุฑุงุช ุงู„ุนู…ู„ ูˆุงู„ุฐุงูƒุฑุฉ ุงู„ู…ุญู…ู„ุฉ | ุงู„ู…ุฎุฑุฌุงุช ุงู„ู†ุงุชุฌุฉ | -|---|---|---|---| -| **"ุชุฌู‡ูŠุฒ ูˆู‡ูŠูƒู„ุฉ ู…ุฌู„ุฏ ุงู„ุชูˆุซูŠู‚"** / "scaffold /docs" | `init` | `workflows/init-docs.md`
`memory/doc-tree.md` | ู…ุฌู„ุฏ `/docs`ุŒ ู…ู„ู `docs/.doc-manifest.json`ุŒ ูˆุตูุญุฉ `docs/README.md` | -| **"ุงุณุชู‚ุฑุงุก ูˆูุญุต ุงู„ูƒูˆุฏ ูˆุงู„ู…ุดุฑูˆุน"** / "gather facts" | `collect` | `workflows/collect.md`
`memory/collection-sources.md` | ุชู‚ุฑูŠุฑ `docs/.collected/.md` (ุชุญู„ูŠู„ ู…ู†ุธู… ุจุงู„ุฃุจุนุงุฏ ุงู„ุฎู…ุณุฉ) | -| **"ูƒุชุงุจุฉ ู…ุฑุฌุน ูˆุงุฌู‡ุฉ ุจุฑู…ุฌุฉ (API)"** / "API reference" | `generate` | `workflows/generate-api.md`
`memory/doc-templates.md`
`memory/stacks/*.md` | ู…ู„ู `docs/api/.md` (ุฌุฏุงูˆู„ ุงู„ู…ุนุงู…ู„ุงุชุŒ ุงู„ู‚ูŠู… ุงู„ู…ุฑุฌุนุฉุŒ ุงู„ุฃุฎุทุงุก) | -| **"ูƒุชุงุจุฉ ุฏู„ูŠู„ ุฅุนุฏุงุฏ ูˆุชุดุบูŠู„"** / "setup guide" | `generate` | `workflows/generate-guide.md`
`memory/doc-templates.md` | ู…ู„ู `docs/guides/.md` (ุฏู„ูŠู„ ู…ุชุฎุตุต ู…ุญุฏุฏ ุงู„ุบุฑุถ) | -| **"ุชูˆู„ูŠุฏ ุฃูˆ ุชุญุฏูŠุซ README ุงู„ุฑุฆูŠุณูŠ"** / "generate readme" | `generate` | `workflows/generate-readme.md`
`memory/doc-templates.md` | ู…ู„ู `README.md` ููŠ ุฌุฐุฑ ุงู„ู…ุดุฑูˆุน (ู†ุธุฑุฉ ุนุงู…ุฉุŒ ุงู„ุชุซุจูŠุชุŒ ุงู„ู…ุชุบูŠุฑุงุช) | -| **"ุฅุถุงูุฉ ุชุนู„ูŠู‚ุงุช ุจุฑู…ุฌูŠุฉ ู„ู„ูƒูˆุฏ"** / "inline docblocks" | `generate` | `workflows/generate-inline.md`
`memory/stacks/*.md` | ุชุนุฏูŠู„ ู…ุจุงุดุฑ ู„ู„ู…ู„ูุงุช ุงู„ู…ุตุฏุฑูŠุฉ ุจุชุนู„ูŠู‚ุงุช PHPDoc / JSDoc / TSDoc | -| **"ุชุญูˆูŠู„ ุงู„ุชูˆุซูŠู‚ุงุช ุฅู„ู‰ ู…ูˆู‚ุน Docsify"** / "deploy portal" | `docsify` | `workflows/docsify.md`
`memory/docsify-config.md` | ู…ู„ูุงุช `docs/index.html` ูˆ`docs/_sidebar.md` (ู…ูˆู‚ุน ุชูุงุนู„ูŠ ู…ุชูƒุงู…ู„) | - ---- - -## ๐Ÿ›ก๏ธ ุถู…ุงู†ุงุช ุงู„ุฃู…ุงู† ูˆุญุฌุจ ุงู„ุจูŠุงู†ุงุช ุงู„ุญุณุงุณุฉ - -ุฃุซู†ุงุก ุชุดุบูŠู„ ูˆูƒู„ุงุก ุงู„ุฐูƒุงุก ุงู„ุงุตุทู†ุงุนูŠุŒ ู‚ุฏ ุชุชุณุฑุจ ู…ูุงุชูŠุญ ุณุฑูŠุฉ ุฃูˆ ุนู†ุงูˆูŠู† ุฎูˆุงุฏู… ุญู‚ูŠู‚ูŠุฉ ุฅู„ู‰ ู…ู„ูุงุช ุงู„ุชูˆุซูŠู‚ ุงู„ุนุงู…ุฉ. ุชูุฑุถ `tidyfactor-doc` ู‚ูˆุงุนุฏ ุญุฌุจ ุตุงุฑู…ุฉ ูˆุบูŠุฑ ู‚ุงุจู„ุฉ ู„ู„ุชุฌุงูˆุฒ (**ุงู„ู‚ุงุนุฏุฉ ุงู„ุฅู„ุฒุงู…ูŠุฉ 6**): - -| ู†ูˆุน ุงู„ุจูŠุงู†ุงุช ุงู„ุญุณุงุณุฉ | ุงู„ู…ุญุธูˆุฑ ู…ู†ุนู‡ ุชู…ุงู…ุงู‹ | ุงู„ุจุฏูŠู„ ุงู„ุขู…ู† ุงู„ุฅู„ุฒุงู…ูŠ | -|---|---|---| -| **ู…ูุงุชูŠุญ API ูˆุงู„ุฑู…ูˆุฒ ุงู„ุณุฑูŠุฉ** | `sk_live_948f98a7c1b2...` | `EXAMPLE_TOKEN_1234567890ABCDEFGH` ุฃูˆ `YOUR_API_KEY` | -| **ูƒู„ู…ุงุช ุงู„ู…ุฑูˆุฑ ูˆู‚ูˆุงุนุฏ ุงู„ุจูŠุงู†ุงุช** | `RootP@ssw0rd2026!` | `your_secret_password` | -| **ุนู†ุงูˆูŠู† IP ุงู„ุฎุงุตุฉ ุจุงู„ุฎูˆุงุฏู…** | `192.168.1.50`, `45.33.21.99` | `203.0.113.1` (ู†ุทุงู‚ RFC 5737 ุงู„ู…ุฎุตุต ู„ู„ุชูˆุซูŠู‚) | -| **ุฑูˆุงุจุท ุงู„ู…ู„ูุงุช ุงู„ู…ุญู„ูŠุฉ** | `file:///C:/path/to/project/...` | `./docs/guides/` ุฃูˆ `project-root/` | -| **ุฑูˆุงุจุท ุจูŠุฆุฉ ุงู„ุชุทูˆูŠุฑ ุงู„ุฏุงุฎู„ูŠุฉ** | `http://localhost:8080/admin` | `https://api.example.com` ุฃูˆ `http://localhost:PORT` | -| **ู…ุณุงุฑุงุช ู…ุฌู„ุฏุงุช ุงู„ู…ุณุชุฎุฏู…** | `/home/developer/workspace/...` | `~/project` ุฃูˆ `/path/to/project` | - ---- - -## ๐ŸŒ ู…ุนุงูŠูŠุฑ ุงู„ุฑูˆุงุจุท ุงู„ู†ุณุจูŠุฉ ูˆุงู„ุชุตูุญ ุงู„ู†ุธูŠู - -ู„ุถู…ุงู† ุนุฑุถ ุงู„ุชูˆุซูŠู‚ ุจุดูƒู„ ุณู„ูŠู… ุนู„ู‰ GitHubุŒ ูˆGitLabุŒ ูˆDocsifyุŒ ูˆุจุฑุงู…ุฌ ู‚ุฑุงุกุฉ ุงู„ู…ุงุฑูƒุฏุงูˆู†ุŒ ุชุทุจู‚ ุงู„ู…ู‡ุงุฑุฉ **ุงู„ู‚ุงุนุฏุฉ ุงู„ุฅู„ุฒุงู…ูŠุฉ 7**: - -- โŒ **ู…ู†ุน ุงู„ู…ุณุงุฑุงุช ุงู„ู…ุทู„ู‚ุฉ ู„ู…ุญุทุฉ ุงู„ุนู…ู„**: ุญุธุฑ ุชุงู… ู„ุฑูˆุงุจุท `file:///` ุฃูˆ ู…ุณุงุฑุงุช ู…ุญุฑูƒุงุช ุงู„ุฃู‚ุฑุงุต ุงู„ู…ุญู„ูŠุฉ (`C:\...` ุฃูˆ `/Users/...`). -- โœ… **ุฑูˆุงุจุท ู†ุณุจูŠุฉ ู†ุธูŠูุฉ**: ุฌู…ูŠุน ุงู„ุฑูˆุงุจุท ุงู„ุฏุงุฎู„ูŠุฉ ู„ู„ู…ุณุชู†ุฏุงุช ุชุนุชู…ุฏ ุนู„ู‰ ุงู„ู…ุณุงุฑุงุช ุงู„ู†ุณุจูŠุฉ ุงู„ู‚ูŠุงุณูŠุฉ (ู…ุซู„ `[ุฏู„ูŠู„ ุงู„ู…ุนู…ุงุฑูŠุฉ](./guides/architecture.md)`). -- โœ… **ุชูˆุฌูŠู‡ ู…ุณุชู‚ุฑ ูˆู…ุณุชู…ุฑ ู„ู„ู‚ูˆุงุฆู… ููŠ Docsify**: ุชูƒูˆูŠู† `alias: { '/.*/_sidebar.md': '/_sidebar.md' }` ู…ุน ุดุฑุทุฉ ู…ุงุฆู„ุฉ ุฌุฐุฑูŠุฉ `/` ู„ู…ู†ุน ุงุฎุชูุงุก ุงู„ู‚ุงุฆู…ุฉ ุงู„ุฌุงู†ุจูŠุฉ ุฃูˆ ุธู‡ูˆุฑ ุฃุฎุทุงุก 404 ููŠ ุงู„ู…ุณุงุฑุงุช ุงู„ู…ุชุฏุงุฎู„ุฉ. -- โœ… **ุตูุญุงุช ุงู„ุชูˆุซูŠู‚ ุงู„ุนุฑุจูŠุฉ ุฏุงุฎู„ ุงู„ู…ุฌู„ุฏ ุงู„ุฑุฆูŠุณูŠ**: ุญูุธ ุงู„ู†ุณุฎ ุงู„ุนุฑุจูŠุฉ ุฏุงุฎู„ `/docs` ู…ุจุงุดุฑุฉ (ู…ุซู„ `docs/README.ar.md`) ุฏูˆู† ุงู„ุฑุจุท ุจู…ู„ูุงุช ุฎุงุฑุฌูŠุฉ ุฎุงุฑุฌ ู†ุทุงู‚ `/docs`. - ---- - -## ๐Ÿ“ ุงู„ู‡ูŠูƒู„ ุงู„ู…ุนูŠุงุฑูŠ ู„ู…ุฌู„ุฏ `/docs` - -ุชู„ุชุฒู… ุฌู…ูŠุน ุงู„ู…ุดุงุฑูŠุน ุงู„ู…ุฏุงุฑุฉ ุจูˆุงุณุทุฉ `tidyfactor-doc` ุจุงู„ู‡ูŠูƒู„ ุงู„ู†ุธูŠู ุงู„ุฎุงู„ูŠ ู…ู† ุงู„ู…ุฌู„ุฏุงุช ุงู„ูุงุฑุบุฉ: - -``` -project-root/ -โ”œโ”€โ”€ README.md # ู†ุธุฑุฉ ุนุงู…ุฉ ูˆุงู„ุจุฏุก ุงู„ุณุฑูŠุน ู„ู„ู…ุดุฑูˆุน (ุงู„ุฌุฐุฑ) -โ””โ”€โ”€ docs/ # ู…ุฌู„ุฏ ุงู„ุชูˆุซูŠู‚ ุงู„ู…ูˆุญุฏ - โ”œโ”€โ”€ README.md # ุงู„ุตูุญุฉ ุงู„ุฑุฆูŠุณูŠุฉ ู„ู…ุฑูƒุฒ ุงู„ุชูˆุซูŠู‚ - โ”œโ”€โ”€ README.ar.md # ุงู„ู†ุธุฑุฉ ุงู„ุนุงู…ุฉ ุจุงู„ุนุฑุจูŠุฉ - โ”œโ”€โ”€ index.html # ุจูˆุงุจุฉ Docsify ุงู„ุชูุงุนู„ูŠุฉ - โ”œโ”€โ”€ _sidebar.md # ุดุฌุฑุฉ ุงู„ุชู†ู‚ู„ ูˆุงู„ู‚ุงุฆู…ุฉ ุงู„ุฌุงู†ุจูŠุฉ ุงู„ู…ูˆู„ุฏุฉ ุขู„ูŠุงู‹ - โ”œโ”€โ”€ .doc-manifest.json # ู…ู„ู ุชุชุจุน ุงู„ุญุงู„ุฉ ูˆุงู„ู…ุฒุงู…ู†ุฉ - โ”œโ”€โ”€ .collected/ # ู†ุชุงุฆุฌ ุงู„ุงุณุชู‚ุฑุงุก ูˆุงู„ูุญุต ุงู„ุฃูˆู„ูŠ (ู…ู„ู ูˆุณูŠุท) - โ”‚ โ”œโ”€โ”€ core.md - โ”‚ โ””โ”€โ”€ auth-module.md - โ”œโ”€โ”€ api/ # ู…ูˆุงุตูุงุช ูˆู…ุฑุงุฌุน ูˆุงุฌู‡ุงุช ุงู„ุจุฑู…ุฌุฉ (API) - โ”‚ โ”œโ”€โ”€ authentication.md - โ”‚ โ””โ”€โ”€ billing.md - โ””โ”€โ”€ guides/ # ุงู„ุฃุฏู„ุฉ ุงู„ูู†ูŠุฉ ูˆุฃุฏู„ุฉ ุงู„ู…ุทูˆุฑูŠู† ูˆุงู„ู…ุณุชุฎุฏู…ูŠู† - โ”œโ”€โ”€ architecture.md - โ”œโ”€โ”€ developer-setup.md - โ””โ”€โ”€ deployment-runbook.md -``` - ---- - -## ๐Ÿš€ ุงู„ุชุซุจูŠุช ูˆุงู„ุชุดุบูŠู„ ุงู„ุณุฑูŠุน - -### 1. ุชุซุจูŠุช ุงู„ู…ู‡ุงุฑุฉ ุนุจุฑ NPM -ู„ุฅุถุงูุฉ ู…ู‡ุงุฑุฉ `tidyfactor-doc` ุฅู„ู‰ ู…ุดุฑูˆุนูƒ ุฃูˆ ุณุฌู„ ุงู„ูˆูƒู„ุงุก ู„ุฏูŠูƒ: - -```bash -npx @tidyfactor/cli-doc add-skill -``` - -### 2. ุงู„ุชูˆุงูู‚ ุงู„ุดุงู…ู„ ู…ุน ูˆูƒู„ุงุก ุงู„ุฐูƒุงุก ุงู„ุงุตุทู†ุงุนูŠ -ูŠู…ูƒู†ูƒ ุงุณุชุฏุนุงุก ุงู„ู…ู‡ุงุฑุฉ ููŠ ุจูŠุฆุฉ ุงู„ุชุทูˆูŠุฑ ุงู„ู…ูุถู„ุฉ ู„ุฏูŠูƒ: - -| ุงู„ูˆูƒูŠู„ ุฃูˆ ุงู„ู…ุญุฑุฑ | ู…ุซุงู„ ุงู„ุงุณุชุฏุนุงุก | -|---|---| -| **Google Antigravity** | `/tidyfactor-doc` ุฃูˆ "ูˆุซู‚ ู‡ุฐุง ุงู„ู…ุดุฑูˆุน ูˆุฃู†ุดุฆ ู…ูˆู‚ุน Docsify" | -| **Claude Code** | `/tidyfactor-doc init` ุฃูˆ "Generate API docs for src/Core" | -| **Cursor & Windsurf** | `@tidyfactor-doc ุฌู‡ุฒ ู…ุฌู„ุฏ ุงู„ุชูˆุซูŠู‚ ูˆุงูุญุต ู…ุณุงุฑ ุงู„ูƒูˆุฏ` | -| **Codex CLI** | `tidyfactor-doc generate API reference` | - -### 3. ุงู„ู…ุนุงูŠู†ุฉ ุงู„ู…ุญู„ูŠุฉ ุงู„ููˆุฑูŠุฉ -ู„ู…ุนุงูŠู†ุฉ ู…ูˆู‚ุน Docsify ู…ุญู„ูŠุงู‹ ููŠ ุงู„ู…ุชุตูุญ: - -```bash -# ุจุงุณุชุฎุฏุงู… ุฎุงุฏู… PHP ุงู„ู…ุฏู…ุฌ -php -S localhost:3001 -t docs - -# ุฃูˆ ุจุงุณุชุฎุฏุงู… ุฃุฏุงุฉ Docsify CLI ุฃูˆ ุจุงูŠุซูˆู† -npx docsify-cli serve docs -python -m http.server 3001 -d docs -``` - ---- - -## ๐Ÿ‘จโ€๐Ÿ’ป ุงู„ู…ู†ุธู…ุฉ ูˆุงู„ุชูˆุงุตู„ ูˆุงู„ุฏุนู… - -- ๐ŸŒ **ุงู„ู…ูˆู‚ุน ุงู„ุฑุณู…ูŠ ู„ู„ู…ู†ุธูˆู…ุฉ:** [https://tidyfactor.com/](https://tidyfactor.com/) -- ๐Ÿ“š **ุงู„ุชูˆุซูŠู‚ ุงู„ุฑุณู…ูŠ ุงู„ู…ุนุชู…ุฏ:** [https://tidyfactor.com/documentation](https://tidyfactor.com/documentation) -- ๐Ÿค **ุงู„ุดุฑูŠูƒ ุงู„ุชู‚ู†ูŠ ุงู„ุฑุณู…ูŠ:** [ูˆูƒุงู„ุฉ ุงู„ูˆูƒุงู„ุฉ ุงู„ุฑู‚ู…ูŠุฉ Alwkala](https://alwkala.com/) -- ๐Ÿ™ **ู…ู†ุธู…ุฉ GitHub ุงู„ุฑุณู…ูŠุฉ:** [github.com/TidyFactor](https://github.com/TidyFactor) -- ๐Ÿ“ง **ุงุณุชูุณุงุฑุงุช ุงู„ุฃุนู…ุงู„ ูˆุงู„ุดุฑุงูƒุงุช:** [hello@tidyfactor.com](mailto:hello@tidyfactor.com) -- ๐Ÿ“ฑ **ูˆุงุชุณุงุจ:** [+20 101 665 6899](https://wa.me/201016656899) -- ๐Ÿ“ž **ุงู„ู‡ุงุชู:** +20 101 665 6899 -- ๐Ÿ“ **ุงู„ู…ู‚ุฑ:** ุงู„ู‚ุงู‡ุฑุฉุŒ ุฌู…ู‡ูˆุฑูŠุฉ ู…ุตุฑ ุงู„ุนุฑุจูŠุฉ - ---- - -## ๐Ÿ“œ ุงู„ุชุฑุฎูŠุต ูˆุงู„ู…ุฌุชู…ุน - -ู…ุฑุฎุตุฉ ุชุญุช ุฑุฎุตุฉ **Apache License 2.0**. ุญู‚ูˆู‚ ุงู„ู†ุดุฑ ู…ุญููˆุธุฉ (c) 2026 ู„ุตุงู„ุญ [ู…ู†ุธูˆู…ุฉ TidyFactor](https://tidyfactor.com) ูˆ[ูˆูƒุงู„ุฉ ุงู„ูˆูƒุงู„ุฉ ุงู„ุฑู‚ู…ูŠุฉ Alwkala](https://alwkala.com). diff --git a/dist/tidyfactor-doc/README.md b/dist/tidyfactor-doc/README.md deleted file mode 100644 index 8c26a08..0000000 --- a/dist/tidyfactor-doc/README.md +++ /dev/null @@ -1,198 +0,0 @@ -
- -# ๐Ÿ“š TidyFactor Doc `v1.3.0` -### Automated Codebase Interview, API Generator & Dual-Engine Publishing Platform (MkDocs Material & Docsify) - -**Building accurate, maintainable, secure, and browsable documentation for the era of Human-Agent Collaboration.** - -[![npm version](https://img.shields.io/npm/v/@tidyfactor/doc.svg?style=for-the-badge&color=4F46E5)](https://www.npmjs.com/package/@tidyfactor/doc) -[![License: Apache 2.0](https://img.shields.io/badge/License-Apache%202.0-blue.svg?style=for-the-badge)](LICENSE) -[![GitHub](https://img.shields.io/badge/GitHub-TidyFactor%2FDoc-181717.svg?style=for-the-badge&logo=github)](https://github.com/TidyFactor/Doc) -[![Security Redaction Certified](https://img.shields.io/badge/Security-Redaction%20Certified-emerald.svg?style=for-the-badge)](#-enterprise-security--sanitization-guarantees) -[![Clean Links Verified](https://img.shields.io/badge/Links-Clean%20%26%20Relative-cyan.svg?style=for-the-badge)](#-clean-relative-links--navigation-standards) -[![Universal AI Agents](https://img.shields.io/badge/AI%20Agents-Universal%20Compatibility-4285F4.svg?style=for-the-badge)](README.md) -[![RTL Ready](https://img.shields.io/badge/RTL-Native%20Arabic-emerald.svg?style=for-the-badge)](README.ar.md) - -[๐ŸŒ Official Website](https://tidyfactor.com/) โ€ข [๐Ÿ“š Documentation](https://tidyfactor.com/documentation) โ€ข [๐Ÿค Partner (Alwkala)](https://alwkala.com/) โ€ข [โšก Commands](#-commands--the-4-phase-documentation-lifecycle) โ€ข [๐Ÿ›ก๏ธ Security Guarantees](#-enterprise-security--sanitization-guarantees) โ€ข [๐Ÿ“– Read in Arabic (ุจุงู„ุนุฑุจูŠุฉ)](README.ar.md) - -

- -

- TidyFactor Doc Hero Banner -

- -
- ---- - -> [!NOTE] -> **TidyFactor Doc** is a deterministic documentation engine and Docsify architecture suite built for AI coding agents (*Google Antigravity, Claude Code, Cursor, Codex, Windsurf*). It systematically interviews a codebaseโ€”parsing source AST docblocks, Git commit rationale, runtime environment variables, and error patternsโ€”to produce pristine, browsable `/docs` portals with zero manual drift, zero credential leaks, and zero broken local paths. - ---- - -## ๐ŸŒŸ Value Proposition & Why TidyFactor Doc? - -| For Developers & Tech Leads | For AI Coding Agents | For Open-Source & Enterprise | -|---|---|---| -| **Zero Manual Writing**: Non-destructive codebase analysis extracts architecture, API signatures, and setup flows directly from source. | **Token-Efficient Routing**: Router `SKILL.md` (~350 tokens) dispatches isolated workflows with exact memory context. | **Instant Docsify Portal**: One command transforms `/docs` into a responsive, searchable documentation website. | -| **Zero Sensitive Leakage**: Enforces automated redaction of API keys, passwords, database credentials, and production IPs. | **Fact-Grounded Only**: Agents are constrained from hallucinating signatures or parametersโ€”everything traces to findings. | **Universal Polyglot**: Native templates for PHP 8+, TypeScript, JavaScript ES Modules, and React/Vue/Next components. | -| **Clean Relative Linking**: Eliminates broken `file:///` and machine paths (`C:\...`), guaranteeing portable markdown. | **Deterministic Validation**: Every workflow has an explicit checklist and manifest tracking in `docs/.doc-manifest.json`. | **Bilingual by Design**: Native LTR/RTL support with curated typography pairings (Inter + Cairo/Tajawal). | - ---- - -## ๐Ÿ”„ The 4-Phase Documentation Lifecycle - -`tidyfactor-doc` structures documentation generation into 4 sequential, deterministic phases: - -```mermaid -graph LR - P1["1. Init (Scaffold)"] --> P2["2. Collect (Interview)"] - P2 --> P3["3. Generate (Authoring)"] - P3 --> P4["4. Docsify (Publish)"] -``` - -``` -[ Phase 1: init ] โ”€โ”€> Creates /docs directory tree & .doc-manifest.json - โ”‚ -[ Phase 2: collect ] โ”€> Gathers 5 dimensions (Code AST, Git History, Env, Personas, Errors) into docs/.collected/ - โ”‚ -[ Phase 3: generate ] โ”€> Produces API refs, Guides, Inline comments, or Root README from collected facts - โ”‚ -[ Phase 4: docsify ] โ”€> Assembles index.html & _sidebar.md for instant static browser preview & hosting -``` - ---- - -## ๐Ÿ›๏ธ Commands & Workflows Registry - -| Intent & User Request | Command | Loaded Workflow & Memory | Output Artifact | -|---|---|---|---| -| **"Set up docs for this project"** / "scaffold /docs" | `init` | `workflows/init-docs.md`
`memory/doc-tree.md` | `/docs` scaffold, `docs/.doc-manifest.json`, `docs/README.md` | -| **"Document this codebase"** / "gather facts for module X" | `collect` | `workflows/collect.md`
`memory/collection-sources.md` | `docs/.collected/.md` (5-dimensional structured analysis) | -| **"Write API reference"** / "generate docs for endpoints" | `generate` | `workflows/generate-api.md`
`memory/doc-templates.md`
`memory/stacks/*.md` | `docs/api/.md` (parameter tables, returns, errors, examples) | -| **"Write setup guide"** / "create architecture runbook" | `generate` | `workflows/generate-guide.md`
`memory/doc-templates.md` | `docs/guides/.md` (focused, single-purpose guide) | -| **"Generate project README"** / "update root README" | `generate` | `workflows/generate-readme.md`
`memory/doc-templates.md` | Root `README.md` (overview, install, env vars, quick start) | -| **"Add inline docblocks"** / "document public functions" | `generate` | `workflows/generate-inline.md`
`memory/stacks/*.md` | Direct source code edit with PHPDoc / JSDoc / TSDoc comments | -| **"Turn /docs into Docsify site"** / "deploy doc portal" | `docsify` | `workflows/docsify.md`
`memory/docsify-config.md` | `docs/index.html` + `docs/_sidebar.md` (instant web portal) | - ---- - -## ๐Ÿ›ก๏ธ Enterprise Security & Sanitization Guarantees - -In modern AI agent workflows, sensitive credentials and private configurations frequently leak into documentation. `tidyfactor-doc` implements strict, non-negotiable redaction rules (**Constraint 6**): - -| Secret / Sensitive Category | Prohibited Leaks | Mandatory Safe Replacement | -|---|---|---| -| **API Tokens & Secret Keys** | `sk_live_948f98a7c1b2...` | `EXAMPLE_TOKEN_1234567890ABCDEFGH` or `YOUR_API_KEY` | -| **Passwords & DB Credentials** | `RootP@ssw0rd2026!` | `your_secret_password` | -| **Server & Host IPs** | `192.168.1.50`, `45.33.21.99` | `203.0.113.1` (RFC 5737 documentation prefix) | -| **Workstation File URIs** | `file:///C:/path/to/project/...` | `./docs/guides/` or `project-root/` | -| **Internal Development URLs** | `http://localhost:8080/admin` | `https://api.example.com` or `http://localhost:PORT` | -| **User Home Directories** | `/home/developer/workspace/...` | `~/project` or `/path/to/project` | - ---- - -## ๐ŸŒ Clean Relative Links & Navigation Standards - -To guarantee that documentation renders flawlessly on GitHub, GitLab, Docsify, and local markdown viewers, `tidyfactor-doc` enforces **Constraint 7**: - -- โŒ **Zero Absolute Drive Paths**: Never output `file:///` URLs or workstation drive letters (`C:\...`, `/Users/...`). -- โœ… **Clean Markdown Relative Links**: All internal document links use standard relative paths (e.g. `[Architecture Guide](./guides/architecture.md)`). -- โœ… **Docsify Persistent Subfolder Routing**: Configures `alias: { '/.*/_sidebar.md': '/_sidebar.md' }` with root-relative leading slashes (`/guides/...`, `/api/...`) to eliminate 404 broken sidebars when navigating deep routes. -- โœ… **Localized Docs Inside Root**: Localized files reside inside `/docs` (e.g. `docs/README.ar.md`), never linking outside the `/docs` boundary. - ---- - -## ๐Ÿ“ Canonical `/docs` Folder Hierarchy - -Every project initialized and maintained by `tidyfactor-doc` strictly adheres to the flattened, no-empty-structures hierarchy: - -``` -project-root/ -โ”œโ”€โ”€ README.md # Project overview & quick start (Root) -โ””โ”€โ”€ docs/ # Single documentation root - โ”œโ”€โ”€ README.md # Doc-site landing page & introduction - โ”œโ”€โ”€ README.ar.md # Arabic localized overview (optional) - โ”œโ”€โ”€ index.html # Docsify single-page application entry point - โ”œโ”€โ”€ _sidebar.md # Auto-generated categorized navigation tree - โ”œโ”€โ”€ .doc-manifest.json # Machine-readable sync & state manifest - โ”œโ”€โ”€ .collected/ # Raw interview findings (intermediate artifact) - โ”‚ โ”œโ”€โ”€ core.md - โ”‚ โ””โ”€โ”€ auth-module.md - โ”œโ”€โ”€ api/ # Public API & endpoint specifications - โ”‚ โ”œโ”€โ”€ authentication.md - โ”‚ โ””โ”€โ”€ billing.md - โ””โ”€โ”€ guides/ # Targeted developer & user guides - โ”œโ”€โ”€ architecture.md - โ”œโ”€โ”€ developer-setup.md - โ””โ”€โ”€ deployment-runbook.md -``` - -### `.doc-manifest.json` Schema -```json -{ - "project": "my-saas-platform", - "stacks": ["php", "ts", "react"], - "collected": { - "auth": "2026-08-20T14:30:00Z", - "core": "2026-08-20T14:32:00Z" - }, - "generated": { - "docs/api/auth.md": "2026-08-20T14:35:00Z", - "docs/guides/developer-setup.md": "2026-08-20T14:36:00Z", - "README.md": "2026-08-20T14:37:00Z" - } -} -``` - ---- - -## ๐Ÿš€ Quick Start & Injection - -### 1. Inject Skill via NPM -Add `tidyfactor-doc` to your active workspace or global agent registry: - -```bash -npx @tidyfactor/cli-doc add-skill -``` - -### 2. Universal Agent Compatibility -Trigger the skill in your preferred AI Coding Assistant: - -| Agent / IDE | Invocation Example | -|---|---| -| **Google Antigravity** | `/tidyfactor-doc` or "Document this codebase and build a Docsify site" | -| **Claude Code** | `/tidyfactor-doc init` or "Generate API docs for src/Core" | -| **Cursor & Windsurf** | `@tidyfactor-doc Set up /docs and interview this PHP module` | -| **Codex CLI** | `tidyfactor-doc generate API reference` | - -### 3. Local Preview -Preview your Docsify documentation portal in real time: - -```bash -# Using PHP built-in server -php -S localhost:3001 -t docs - -# Or using Docsify CLI / Python -npx docsify-cli serve docs -python -m http.server 3001 -d docs -``` - ---- - -## ๐Ÿ‘จโ€๐Ÿ’ป Organization & Support - -- ๐ŸŒ **Official Website:** [https://tidyfactor.com/](https://tidyfactor.com/) -- ๐Ÿ“š **Official Documentation:** [https://tidyfactor.com/documentation](https://tidyfactor.com/documentation) -- ๐Ÿค **Official Partner Website:** [Alwkala Digital Agency](https://alwkala.com/) -- ๐Ÿ™ **GitHub Organization:** [github.com/TidyFactor](https://github.com/TidyFactor) -- ๐Ÿ“ง **Business Inquiries:** [hello@tidyfactor.com](mailto:hello@tidyfactor.com) -- ๐Ÿ“ฑ **WhatsApp:** [+20 101 665 6899](https://wa.me/201016656899) -- ๐Ÿ“ž **Phone:** +20 101 665 6899 -- ๐Ÿ“ **Location:** Cairo, Egypt - ---- - -## ๐Ÿ“œ License - -Licensed under the **Apache License 2.0**. Copyright (c) 2026 [TidyFactor](https://tidyfactor.com) & [Alwkala](https://alwkala.com). diff --git a/dist/tidyfactor-doc/SKILL.md b/dist/tidyfactor-doc/SKILL.md deleted file mode 100644 index 34f043e..0000000 --- a/dist/tidyfactor-doc/SKILL.md +++ /dev/null @@ -1,53 +0,0 @@ ---- -name: tidyfactor-doc -description: "Code documentation builder and dual-engine publishing platform (MkDocs Material and Docsify). Generates comprehensive API references, READMEs, inline docblocks, and technical guides under /docs. Trigger on commands 'init', 'collect', 'generate', 'site', 'mkdocs', 'docsify', or requests like 'document this codebase', 'generate API docs', 'set up MkDocs', or 'set up Docsify'." ---- -# TidyFactor Doc - -A command dispatcher. This file does not do the work itself โ€” it routes to the right command, which routes to the right workflow, which injects the right memory. - -## Commands - -| User intent | Command | What it loads | -|---|---|---| -| "Set up docs for this project" / "scaffold /docs" | `references/commands/init.md` | `workflows/init-docs.md` + `memory/doc-tree.md` | -| "Document this codebase" / "gather what's needed to document X" | `references/commands/collect.md` | `workflows/collect.md` + `memory/collection-sources.md` | -| "Write API docs" / "generate a README" / "add inline comments" / "write a guide" | `references/commands/generate.md` | `workflows/generate-api.md` (or `generate-readme.md` / `generate-inline.md` / `generate-guide.md`) + `memory/doc-templates.md` + matching `memory/stacks/*.md` | -| "Publish documentation portal" / "turn /docs into a doc site" (Interactive) | `references/commands/site.md` | `memory/site-engines.md` + interactive selection (`workflows/mkdocs.md` or `workflows/docsify.md`) | -| "Set up MkDocs Material" / "compile static documentation" | `references/commands/mkdocs.md` | `workflows/mkdocs.md` + `memory/mkdocs-config.md` | -| "Set up Docsify" / "build lightweight zero-build doc SPA" | `references/commands/docsify.md` | `workflows/docsify.md` + `memory/docsify-config.md` | - -Read only the command file that matches the request. Do not read all commands simultaneously. - -## Non-negotiable constraints on every command - -1. **All generated documentation lives under `/docs`.** Never write API references, guides, or generated READMEs to another location. (`README.md` itself stays at the project root, per convention โ€” everything else generated goes in `/docs`.) -2. **`generate` never invents content.** It only writes docs from what `collect` gathered (or equivalent detail the user supplies directly in the conversation) โ€” never from assumed signatures, assumed env vars, or assumed behavior. If required detail is missing, `generate` says what's missing and asks or falls back to running `collect` first. -3. **Stack rules are looked up, never guessed.** Before writing any code-level doc (API reference, inline comments), load the matching file under `memory/stacks/` for the language/framework actually in use. Do not mix PHPDoc conventions into a TypeScript file or vice versa. -4. **`site`, `mkdocs`, and `docsify` only organize and publish what's already in `/docs`.** They never author new documentation content โ€” that's `generate`'s job. - - For **MkDocs Material**: Generate standard `mkdocs.yml`, configure Neo-Brutalist CSS tokens (`extra.css`), configure Arabic/English i18n (`*.ar.md` suffix), and build cleanly with `mkdocs build --strict`. - - For **Docsify**: Include `alias: { '/.*/_sidebar.md': '/_sidebar.md' }` and root-relative leading slashes `/` in `_sidebar.md` to guarantee persistent sidebar navigation across all subfolder routes. -5. **Standalone.** This skill does not read or depend on any other `tidyfactor-*` skill's conventions, even when the project happens to be built on one of those tracks. -6. **Zero Sensitive Data Leakage.** Under absolutely no circumstances should any real sensitive data (e.g., real API tokens, WHM/cPanel passwords, production server IPs, real DB credentials, secret keys, private auth tokens, or local absolute drive paths) be written into documentation. ALWAYS redact and replace these with safe generic placeholders. -7. **Clean Relative Links Only.** Never include local machine filesystem URLs (such as `file:///C:/...`, `file:c:`, or absolute workstation paths) in documentation links or markdown cross-references. All document cross-links must use clean relative markdown paths or standard public web URLs (`https://...`). - -## Anti-Triggers - -- Do NOT use for writing marketing campaigns or sales copywriting (use `tidyfactor-marketing`). -- Do NOT use for platform infrastructure management or deployment tasks (use `tidyfactor-github` or ops skills). - -## Tooling Scope (Rule 10) - -- **Execution Tools**: - - `audit_docs` (`scripts/audit_docs.py`): Sub-second AST & credential leak scanner for markdown docs under `/docs`. -- **Contract & Schema**: Portably declared in `manifest.json` with `"skill_root_anchor": "self"`. -- **Invocability**: Executable via direct CLI or through `tidyfactor-brain` MCP `run_skill_tool`. - -## Skill vs MCP Boundary (Rule 12) - -- **Inside Skill**: Static documentation templates, stack-specific docblock schemas, and local hygiene auditing scripts. -- **MCP Layer**: Sovereign Brain persistence (`search_knowledge_base`, `extract_knowledge_item`) operating under the strict Fail-Open protocol (`references/memory/20-brain-baas-integration.md`). - -## Sequencing - -`init` โ†’ `collect` โ†’ `generate` (repeatable, once per doc target) โ†’ `site` / `mkdocs` / `docsify` (optional, once /docs has real content). diff --git a/dist/tidyfactor-doc/bin/add-skill.js b/dist/tidyfactor-doc/bin/add-skill.js deleted file mode 100644 index 551a203..0000000 --- a/dist/tidyfactor-doc/bin/add-skill.js +++ /dev/null @@ -1,65 +0,0 @@ -#!/usr/bin/env node -/** - * bin/add-skill.js โ€” Multi-Agent Skill Installer Wrapper for tidyfactor-doc - * Supports Trae, Cursor, Windsurf, Antigravity, GitHub Copilot, RooCode, OpenCode, KiloCode, Warp, and Universal. - * - * @license Apache-2.0 - */ - -const fs = require('fs'); -const path = require('path'); -const os = require('os'); - -const targetDir = process.cwd(); -const skillSource = path.resolve(__dirname, '..'); -const skillName = 'tidyfactor-doc'; - -const AGENT_MAP = [ - { name: 'Trae AI IDE', dir: path.join(targetDir, '.trae', 'skills', skillName), test: path.join(targetDir, '.trae') }, - { name: 'Cursor IDE', dir: path.join(targetDir, '.cursor', 'skills', skillName), test: path.join(targetDir, '.cursor') }, - { name: 'Windsurf Cascade', dir: path.join(targetDir, '.windsurf', 'skills', skillName), test: path.join(targetDir, '.windsurf') }, - { name: 'GitHub Copilot', dir: path.join(targetDir, '.github', 'prompts', skillName), test: path.join(targetDir, '.github') }, - { name: 'RooCode', dir: path.join(targetDir, '.roo', 'skills', skillName), test: path.join(targetDir, '.roo') }, - { name: 'OpenCode / Zen', dir: path.join(targetDir, '.opencode', 'skills', skillName), test: path.join(targetDir, '.opencode') }, - { name: 'KiloCode', dir: path.join(targetDir, '.kilocode', 'skills', skillName), test: path.join(targetDir, '.kilocode') }, - { name: 'Warp Terminal', dir: path.join(targetDir, '.warp', 'skills', skillName), test: path.join(targetDir, '.warp') }, - { name: 'Kiro Spec IDE', dir: path.join(targetDir, '.kiro', 'skills', skillName), test: path.join(targetDir, '.kiro') }, - { name: 'Claude Code', dir: path.join(targetDir, '.claude', 'skills', skillName), test: path.join(targetDir, '.claude') }, - { name: 'Zed AI Agent', dir: path.join(targetDir, '.zed', 'skills', skillName), test: path.join(targetDir, '.zed') }, - { name: 'Google Antigravity/Gemini', dir: path.join(targetDir, '.agents', 'skills', skillName), test: path.join(targetDir, '.agents') }, -]; - -function copyRecursive(src, dest) { - fs.mkdirSync(dest, { recursive: true }); - const entries = fs.readdirSync(src, { withFileTypes: true }); - for (const entry of entries) { - const srcPath = path.join(src, entry.name); - const destPath = path.join(dest, entry.name); - if (['.git', 'node_modules', 'dist'].includes(entry.name)) continue; - if (entry.isDirectory()) { - copyRecursive(srcPath, destPath); - } else { - fs.copyFileSync(srcPath, destPath); - } - } -} - -// Determine installation targets -let mountedTargets = []; - -for (const agent of AGENT_MAP) { - if (fs.existsSync(agent.test)) { - copyRecursive(skillSource, agent.dir); - mountedTargets.push(agent.name + ' (' + path.relative(targetDir, agent.dir) + ')'); - } -} - -// Always ensure universal fallback in .agents/skills/ -const defaultDir = path.join(targetDir, '.agents', 'skills', skillName); -copyRecursive(skillSource, defaultDir); -if (!mountedTargets.some(t => t.includes('.agents'))) { - mountedTargets.push('Universal Default (.agents/skills/' + skillName + ')'); -} - -console.log('โœจ Successfully injected ' + skillName + ' into:'); -mountedTargets.forEach(t => console.log(' โ€ข ' + t)); diff --git a/dist/tidyfactor-doc/brand.json b/dist/tidyfactor-doc/brand.json deleted file mode 100644 index b4e9b10..0000000 --- a/dist/tidyfactor-doc/brand.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "name": "TidyFactor Doc", - "version": "1.5.0", - "publisher": "TidyFactor Ecosystem", - "partner": "Alwkala Digital Agency (https://alwkala.com)", - "contact": { - "website": "https://tidyfactor.com", - "email": "hello@tidyfactor.com", - "whatsapp": "+201016656899", - "location": "Cairo, Egypt" - }, - "license": "Apache-2.0" -} diff --git a/dist/tidyfactor-doc/package.json b/dist/tidyfactor-doc/package.json deleted file mode 100644 index ab1df48..0000000 --- a/dist/tidyfactor-doc/package.json +++ /dev/null @@ -1,60 +0,0 @@ -{ - "name": "@tidyfactor/doc", - "version": "1.5.0", - "description": "TidyFactor Doc โ€” Code Documentation Builder & Dual-Engine Publishing Platform (MkDocs Material & Docsify) for AI Coding Agents", - "main": "SKILL.md", - "bin": { - "tidyfactor-doc": "bin/add-skill.js", - "add-skill": "bin/add-skill.js", - "add-doc-skill": "bin/add-skill.js" - }, - "keywords": [ - "tidyfactor", - "docs", - "docsify", - "mkdocs", - "ai-agents", - "antigravity", - "claude-code", - "cursor", - "documentation-generator" - ], - "author": "TidyFactor (https://tidyfactor.com)", - "license": "Apache-2.0", - "repository": { - "type": "git", - "url": "git+https://github.com/TidyFactor/Doc.git" - }, - "scripts": { - "validate": "python tools/validate_skill.py", - "build": "node tools/build-skill.js", - "release": "python ../tools/release_skill.py ." - }, - "publishConfig": { - "access": "public" - }, - "files": [ - ".tidyfactor", - "AGENTS.md", - "CHANGELOG.md", - "LICENSE", - "README.ar.md", - "README.de.md", - "README.es.md", - "README.fa.md", - "README.fr.md", - "README.md", - "README.pt.md", - "README.zh.md", - "SKILL.md", - "assets", - "bin", - "brand.json", - "manifest.json", - "memory", - "references", - "scripts", - "templates", - "tools" - ] -} diff --git a/dist/tidyfactor-doc/references/commands/collect.md b/dist/tidyfactor-doc/references/commands/collect.md deleted file mode 100644 index 28b38cd..0000000 --- a/dist/tidyfactor-doc/references/commands/collect.md +++ /dev/null @@ -1,15 +0,0 @@ -# Command: collect - -Runtime entry point for "document this codebase" / "gather what's needed to document X." - -## Dispatch steps - -1. Load `../memory/collection-sources.md` โ€” the five collection dimensions and what to extract from each. -2. Load `../workflows/collect.md` โ€” the ordered interview/extraction sequence. -3. Run the workflow against the target codebase (or the specific slice of it the user named โ€” a single module, endpoint, or component). - -## Does NOT - -- Does not write any files under `/docs`. `collect`'s output is structured source material (findings written to `docs/.collected/.md`, per `collect.md`'s own step) โ€” not a finished doc. -- Does not load `memory/doc-templates.md` or any `memory/stacks/*.md` file โ€” formatting the findings into a stack-correct doc is `generate`'s job, not this one. -- Does not require `init` to have run first, but if `docs/.doc-manifest.json` doesn't exist yet, say so and offer to run `init` first rather than silently creating an ad hoc structure. diff --git a/dist/tidyfactor-doc/references/commands/docsify.md b/dist/tidyfactor-doc/references/commands/docsify.md deleted file mode 100644 index e98fc7b..0000000 --- a/dist/tidyfactor-doc/references/commands/docsify.md +++ /dev/null @@ -1,15 +0,0 @@ -# Command: docsify - -Runtime entry point for "turn /docs into a doc site" / "set up Docsify (Zero-Build SPA)." - -## Dispatch steps - -1. Load `../memory/docsify-config.md` โ€” file layout, plugin defaults, sidebar-generation rule, deploy targets. -2. Load `../workflows/docsify.md` โ€” the setup sequence. -3. Confirm `/docs` already has real content (at least one generated doc beyond the scaffold). -4. Run `workflows/docsify.md`. - -## Does NOT - -- Does not author any new page content โ€” it wires up navigation (`_sidebar.md`), an entry point (`index.html`), and optionally a cover page over whatever already exists in `/docs`. -- Does not load `memory/doc-templates.md` or any `memory/stacks/*.md` file. diff --git a/dist/tidyfactor-doc/references/commands/generate.md b/dist/tidyfactor-doc/references/commands/generate.md deleted file mode 100644 index f0a2c91..0000000 --- a/dist/tidyfactor-doc/references/commands/generate.md +++ /dev/null @@ -1,23 +0,0 @@ -# Command: generate - -Runtime entry point for "write API docs" / "generate a README" / "add inline comments" / "write a guide." A router within a router: figure out which doc type is wanted, then load exactly one workflow for it. - -## Dispatch steps - -1. **Identify the doc type.** If not obvious from the request, ask: - > "Which one โ€” API reference, README, inline code comments, or a technical guide (setup/architecture/workflow)?" -2. **Identify the stack** (PHP / JS / TS / React / Vue / Next). If not obvious from the project, ask or detect from file extensions / config files (`composer.json`, `package.json` + `tsconfig.json`, framework config files). -3. Load the matching workflow โ€” exactly one: - - API reference โ†’ `../workflows/generate-api.md` - - README โ†’ `../workflows/generate-readme.md` - - Inline comments โ†’ `../workflows/generate-inline.md` - - Guide โ†’ `../workflows/generate-guide.md` -4. Load `../memory/doc-templates.md`. -5. Load the matching stack file under `../memory/stacks/` โ€” `php.md`, `js-ts.md`, or `react-vue-next.md`. Never load more than the stacks actually present in the target. -6. Confirm `collect` has already run for this target (check for `docs/.collected/.md`). If it hasn't, and the user hasn't supplied equivalent detail inline, stop and say so โ€” do not generate from assumption. See constraint 2 in `SKILL.md`. -7. Run the loaded workflow. - -## Does NOT - -- Does not load more than one `workflows/generate-*.md` file per invocation. Multiple doc types requested at once โ†’ run this dispatch sequence once per type, sequentially. -- Does not load `memory/collection-sources.md` or `memory/docsify-config.md` โ€” not this command's concern. diff --git a/dist/tidyfactor-doc/references/commands/init.md b/dist/tidyfactor-doc/references/commands/init.md deleted file mode 100644 index c407603..0000000 --- a/dist/tidyfactor-doc/references/commands/init.md +++ /dev/null @@ -1,15 +0,0 @@ -# Command: init - -Runtime entry point for "set up docs for this project" / "scaffold /docs." - -## Dispatch steps - -1. Load `../memory/doc-tree.md` โ€” the canonical `/docs` folder shape and the doc-manifest schema. -2. Load `../workflows/init-docs.md` โ€” the scaffolding sequence. -3. Run the workflow. - -## Does NOT - -- Does not write any actual documentation content (no API entries, no guide prose). That's `generate`. -- Does not run `collect`. If the user wants both, run `init` first, then hand off to `collect`. -- Does not load any `memory/stacks/*.md` file โ€” stack detection here only decides which manifest fields to pre-fill, not how to document anything yet. diff --git a/dist/tidyfactor-doc/references/commands/mkdocs.md b/dist/tidyfactor-doc/references/commands/mkdocs.md deleted file mode 100644 index 30e7054..0000000 --- a/dist/tidyfactor-doc/references/commands/mkdocs.md +++ /dev/null @@ -1,15 +0,0 @@ -# Command: mkdocs - -Runtime entry point for "set up MkDocs" / "build MkDocs Material site" / "compile static documentation". - -## Dispatch steps - -1. Load `../memory/mkdocs-config.md` โ€” master YAML schema, theme tokens, extensions, i18n rules, and deploy options. -2. Load `../workflows/mkdocs.md` โ€” the setup and build sequence. -3. Confirm `/docs` has real content. -4. Run `workflows/mkdocs.md`. - -## Does NOT - -- Does not author new documentation content โ€” it generates `mkdocs.yml`, configures themes, and compiles the static site. -- Does not modify source markdown semantics, only removes incompatible raw HTML wrappers. diff --git a/dist/tidyfactor-doc/references/commands/site.md b/dist/tidyfactor-doc/references/commands/site.md deleted file mode 100644 index 75c436d..0000000 --- a/dist/tidyfactor-doc/references/commands/site.md +++ /dev/null @@ -1,23 +0,0 @@ -# Command: site - -Runtime entry point for "turn /docs into a doc site" / "publish documentation portal" / "set up documentation site". - -## Dispatch steps - -1. Load `../memory/site-engines.md` โ€” comparison between MkDocs Material and Docsify. -2. Confirm `/docs` has real content (at least one generated doc beyond the scaffold). -3. **Interactive Engine Selection:** - - Detect if Python is available via `python --version 2>&1`. - - If the user explicitly requested a specific engine (e.g., "use mkdocs" or "use docsify"), route directly: - - "mkdocs" โ†’ Dispatch `references/commands/mkdocs.md`. - - "docsify" โ†’ Dispatch `references/commands/docsify.md`. - - If no engine was specified: - - Present the two options to the user with the summary from `memory/site-engines.md`: - - **Option 1: MkDocs Material (Recommended for Production)**: Pre-compiled static HTML, 100/100 Core Web Vitals, bilingual (Arabic RTL + English LTR) parallel builds, offline search indexing, and Neo-Brutalist styling. Requires Python locally for building. - - **Option 2: Docsify (Zero-Build Lightweight SPA)**: Client-side SPA, zero build step, single `index.html` + `_sidebar.md` over CDN. Recommended when Python is not available or for internal repo prototyping. - - Prompt the user to pick their preference or proceed with the recommended engine based on detected toolchain. -4. Execute the chosen workflow (`workflows/mkdocs.md` or `workflows/docsify.md`). - -## Does NOT - -- Does not author any new markdown content โ€” it structures, configures, and publishes what's already in `/docs`. diff --git a/dist/tidyfactor-doc/references/memory/collection-sources.md b/dist/tidyfactor-doc/references/memory/collection-sources.md deleted file mode 100644 index 883ecbd..0000000 --- a/dist/tidyfactor-doc/references/memory/collection-sources.md +++ /dev/null @@ -1,48 +0,0 @@ - -# Memory: collection-sources - -The five dimensions `collect` runs against a target, and exactly what to pull from each. Operational โ€” no rationale. - -## 1. Code parsing - -- Extract existing docblocks/comments verbatim (don't paraphrase yet โ€” that's `generate`'s job). -- List every public function, method, class, exported type, and (for components) prop/slot/event definition. -- Note which of these already have adequate comments vs. none vs. stale (comment doesn't match current signature). - -## 2. Commit history - -- `git log --follow -- ` for the target's files: pull commit messages that explain *why*, not routine messages ("fix typo"). -- Any available PR/MR descriptions touching the target: design decisions, rejected alternatives, known limitations mentioned by the author. -- Flag any TODO/FIXME/HACK comments found alongside โ€” they're often undocumented known issues. - -## 3. Runtime & environment - -- Every environment variable the target reads (grep for `getenv`/`process.env`/`$_ENV`/config-loader calls), with whether it's required or optional and any default. -- Software dependencies and version constraints from the manifest (`composer.json`, `package.json`) that the target actually uses โ€” not the whole project's dependency list. -- Any stated hardware/resource limits (memory limits, timeout values, rate limits) found in config or comments. -- **Sanitization Rule**: Never collect real values of secrets (API keys, passwords, JWT secrets, private IP addresses, database credentials). Store only the variable name, description, and a synthetic example placeholder (e.g. `sk_test_EXAMPLE123456`, `203.0.113.10`). - -## 4. User persona tracing - -- Classify the target's readership: **API consumer** (calls it from outside), **internal maintainer** (edits this code), **end-user** (uses a UI built on it), or a mix. -- For each persona present, note which facts from the other four dimensions matter to them โ€” this list is what `generate` uses to prioritize content per doc type. - -## 5. Error patterns - -- Every thrown exception / returned error code / rejected promise in the target, with the condition that triggers it. -- How each error is meant to be handled or surfaced (caught and logged? bubbled to caller? shown to end-user?) โ€” from code and any logging statements found. -- Common failure modes mentioned in commit history or TODO comments that aren't yet reflected in actual error handling. -- **Scrubbing Rule**: Redact real database connection strings, local absolute file paths (e.g. `/home/user/project/...`), or authorization headers that might appear in error logs or exception messages. - ---- - -## ๐Ÿ”’ Security & Link Sanitization Reference - -| Item Category | Dangerous / Prohibited | Mandatory Safe Replacement | -|---|---|---| -| API Keys / Tokens | `sk_live_948f98a7c...` | `YOUR_API_KEY_HERE` or `EXAMPLE_TOKEN_123` | -| Passwords / DB Secrets | `P@ssw0rd2026!` | `your_secure_password` | -| Server IPs | `192.168.1.15`, `45.33.21.99` | `203.0.113.1` (RFC 5737 doc range) | -| Local Drive Paths | `file:///C:/path/to/project/...` | `./docs/guides/` or `project-root/` | -| Local Workstation URLs | `http://localhost:8080/secret` | `https://api.example.com` or `http://localhost:PORT` | -| User Home Dirs | `/home/developer/workspace/...` | `~/project` or `/path/to/project` | diff --git a/dist/tidyfactor-doc/references/memory/doc-templates.md b/dist/tidyfactor-doc/references/memory/doc-templates.md deleted file mode 100644 index 8bb810d..0000000 --- a/dist/tidyfactor-doc/references/memory/doc-templates.md +++ /dev/null @@ -1,74 +0,0 @@ - -# Memory: doc-templates - -Shapes for each doc type `generate` produces. Templates, not prose โ€” fill in from `collect` findings. - -## API reference (`docs/api/.md`) - -```markdown -# API Reference - - - -## - - - -**Parameters** -| Name | Type | Required | Description | -|---|---|---|---| - -**Returns**: โ€” - -**Throws / Errors**: - -**Example** - - ---- - - -## See also - -``` - -## README (project root `README.md`) - -```markdown -# - - - -## Requirements - - -## Setup - - -## Environment variables -| Variable | Required | Default | Description | Example | -|---|---|---|---|---| -| `API_KEY` | Yes | โ€” | Secret authentication token | `EXAMPLE_TOKEN_1234567890ABCDEFGH` | -| `DB_HOST` | Yes | `localhost` | Database host IP or hostname | `203.0.113.10` | -| `DB_PASS` | Yes | โ€” | Database user password | `your_secret_password` | - -## Usage - - -## Documentation -Full reference: [`/docs`](./docs/README.md) -``` - -## Guide (`docs/guides/.md`) - -```markdown -# - - - -##
- - -## Related - -``` diff --git a/dist/tidyfactor-doc/references/memory/doc-tree.md b/dist/tidyfactor-doc/references/memory/doc-tree.md deleted file mode 100644 index c26987c..0000000 --- a/dist/tidyfactor-doc/references/memory/doc-tree.md +++ /dev/null @@ -1,38 +0,0 @@ - -# Memory: doc-tree - -Canonical `/docs` folder shape and the manifest schema. Every command reads this before touching `/docs` so the structure stays identical across projects. - -## Folder shape - -``` -docs/ -โ”œโ”€โ”€ README.md # doc-site landing page (generated by init) -โ”œโ”€โ”€ .doc-manifest.json # tracking file (generated by init, updated by collect/generate) -โ”œโ”€โ”€ .collected/ # raw findings from `collect`, one file per target โ€” not site content -โ”‚ โ””โ”€โ”€ .md -โ”œโ”€โ”€ api/ # one file per documented target โ€” only if the project has an API surface -โ”‚ โ””โ”€โ”€ .md -โ””โ”€โ”€ guides/ # one file per guide purpose โ€” only once at least one guide exists - โ””โ”€โ”€ .md -``` - -No Empty Structures: `init` creates `api/` only if the stack detection found an API surface (endpoints, public package exports), and `guides/` is created lazily by the first `generate-guide` run, not by `init`. `.collected/` is created lazily by the first `collect` run. - -## `.doc-manifest.json` schema - -```json -{ - "project": "", - "stacks": ["php" | "js" | "ts" | "react" | "vue" | "next", "..."], - "collected": { - "": "" - }, - "generated": { - "": "" - } -} -``` - -- `collected` and `generated` are separate: a target can be collected without anything generated from it yet. -- `generated` entries aren't limited to `/docs` paths โ€” `generate-readme` writes to root `README.md` and `generate-inline` touches source files, both still tracked here for audit purposes. diff --git a/dist/tidyfactor-doc/references/memory/docsify-config.md b/dist/tidyfactor-doc/references/memory/docsify-config.md deleted file mode 100644 index e1dfcb7..0000000 --- a/dist/tidyfactor-doc/references/memory/docsify-config.md +++ /dev/null @@ -1,274 +0,0 @@ - -# Memory: docsify-config - -Fixed Docsify setup used by the `docsify` workflow. Not a menu of options โ€” locked, production-tested config for TidyFactor documentation web portals. - -## `docs/index.html` Template - -```html - - - - - <PROJECT_NAME> Documentation - - - - - - -
- - - - - - - - - - -``` - -Replace `` from `docs/.doc-manifest.json`'s `project` field, and `` with project repository or developer link (`https://github.com/alwkala/TidyFactor-Go`). - ---- - -## Critical Rules & Lessons Learned - -### 1. Subfolder Navigation Sidebar Alias -- **CRITICAL**: Always configure `alias: { '/.*/_sidebar.md': '/_sidebar.md' }` in `window.$docsify`. Without this alias, opening subfolder guides (e.g. `/#/guides/architecture-and-setup`) causes Docsify to look for `guides/_sidebar.md` and hide the sidebar menu! -- **CRITICAL**: Use leading slashes `/` for all links in `_sidebar.md` (`/guides/admin-user-guide.md`, `/api/project.md`) so links resolve relative to the `/docs` root from any route depth. - -### 2. Localized Pages Inside Docs Root -- **CRITICAL**: Docsify web root is `/docs`. Never link out of `/docs` using relative `../` paths (e.g. `../README.ar.md`), as Docsify SPA routing will throw `404 - Not Found`. -- Always place localized landing pages inside `/docs` (e.g. `docs/README.ar.md`), rendering smoothly at `/#/README.ar.md`. - -### 3. Hamburger Toggle Button (`.sidebar-toggle`) Styling -- Always style `.sidebar-toggle` and `.sidebar-toggle-button` with fixed positioning (`top: 14px; left: 14px; z-index: 1000`) and explicit `` lines (`width: 20px; height: 2px; display: block`) so the hamburger button remains accessible without collapsing or overlapping sidebar text items. - -### 4. Cross-Platform Emojis & Typography -- Country flag emojis (`๐Ÿ‡ธ๐Ÿ‡ฆ`, `๐Ÿ‡บ๐Ÿ‡ธ`) render as 2-letter codes (`SA`, `US`) on Windows Chrome/Edge. Use clean text badges (`[ุนุฑุจูŠ]`, `[EN]`) in `_sidebar.md`. -- Always load Google Fonts (`Cairo` for Arabic RTL, `Inter` for English LTR, `Fira Code` for code blocks) in `docs/index.html`. - ---- - -## `_sidebar.md` Generation Rule - -Group by audience/purpose, root docs first, using leading slashes `/`: - -```markdown -- ๐ŸŒ [Overview / ุงู„ู†ุธุฑุฉ ุงู„ุนุงู…ุฉ](/README.md) -- ๐Ÿ“– [ุงู„ู…ู‚ุฏู…ุฉ ุจุงู„ุนุฑุจูŠุฉ](/README.ar.md) -- ๐Ÿ’ก [ุฑุคูŠุฉ ุงู„ู…ู†ุธูˆู…ุฉ ูˆุงู„ุดุฑูƒุฉ](/guides/vision-and-ecosystem.md) - -- [ุนุฑุจูŠ] ุฃุฏู„ุฉ ุงู„ู…ุณุชุฎุฏู… (User Guides - AR) - - [ุฏู„ูŠู„ ู…ุงู„ูƒ ุงู„ู…ูˆู‚ุน (Admin User Guide)](/guides/admin-user-guide.md) - - [ุฏู„ูŠู„ ุชุญุฑูŠุฑ ุงู„ู…ุญุชูˆู‰ (Editing Pages Content)](/guides/pages-editing-guide.md) - -- [EN] Developer & Technical Guides - - [Quick Start Guide](/guides/quick-start.md) - - [Platform & System Specifications](/guides/system-specifications.md) - - [AI Coding & Agent Workflows](/guides/ai-agent-workflows.md) - - [Content Engine Architecture & API](/guides/content-engine.md) - - [Architecture & Setup Guide](/guides/architecture-and-setup.md) - - [Database & Storage Architecture](/guides/database-and-storage.md) - - [Security & System Hardening](/guides/security-and-hardening.md) - - [Production Deployment & Hosting](/guides/deployment-and-hosting.md) - - [CMS Content Engine & Backups](/guides/cms-content-engine-and-backups.md) - -- ๐Ÿ“š REST API Reference - - [API Endpoints Specifications](/api/project.md) - ---- - -- ๐Ÿ‘จโ€๐Ÿ’ป Developed by [Alwkala](https://github.com/alwkala) -``` - -Regenerate the whole file each run so it never drifts from what's actually in `/docs`. - ---- - -## Preview - -Local static server: `php -S localhost:3001 -t docs` or `npx docsify-cli serve docs`. diff --git a/dist/tidyfactor-doc/references/memory/mkdocs-config.md b/dist/tidyfactor-doc/references/memory/mkdocs-config.md deleted file mode 100644 index 24f32ed..0000000 --- a/dist/tidyfactor-doc/references/memory/mkdocs-config.md +++ /dev/null @@ -1,171 +0,0 @@ - -# Memory: MkDocs Material Configuration Spec - -Complete architectural specification for scaffolding and compiling production-grade documentation portals with MkDocs Material. - ---- - -## 1. Package Requirements (`requirements.txt`) - -```text -mkdocs-material>=9.5 -mkdocs-static-i18n>=1.2 -``` - ---- - -## 2. Master Configuration Schema (`mkdocs.yml`) - -```yaml -site_name: Project Documentation -site_url: https://example.com/docs/ -site_description: "Production Documentation Portal" -site_author: Engineering Team - -docs_dir: docs -site_dir: site - -theme: - name: material - language: en - direction: ltr - custom_dir: overrides - - logo: assets/logo.png - favicon: assets/favicon.png - - font: - text: Plus Jakarta Sans - code: Fira Code - - palette: - # Light Mode - - media: "(prefers-color-scheme: light)" - scheme: tidyfactor-light - primary: custom - accent: custom - toggle: - icon: material/brightness-7 - name: Switch to Dark Mode - - # Dark Mode - - media: "(prefers-color-scheme: dark)" - scheme: tidyfactor-dark - primary: custom - accent: custom - toggle: - icon: material/brightness-4 - name: Switch to Light Mode - - features: - - navigation.tracking - - navigation.tabs - - navigation.tabs.sticky - - navigation.sections - - navigation.expand - - navigation.path - - navigation.top - - navigation.indexes - - navigation.footer - - search.suggest - - search.highlight - - search.share - - content.code.copy - - content.code.annotate - - content.tabs.link - - header.autohide - - toc.follow - -plugins: - - search: - separator: '[\s\-\.]+' - lang: - - en - - ar - - - i18n: - docs_structure: suffix - languages: - - locale: en - name: English - default: true - build: true - - locale: ar - name: ุงู„ุนุฑุจูŠุฉ - build: true - theme: - language: ar - direction: rtl - font: - text: Tajawal - code: Fira Code - -markdown_extensions: - - abbr - - admonition - - attr_list - - def_list - - footnotes - - md_in_html - - tables - - toc: - permalink: true - toc_depth: 3 - - pymdownx.arithmatex: - generic: true - - pymdownx.betterem: - smart_enable: all - - pymdownx.caret - - pymdownx.details - - pymdownx.emoji: - emoji_index: !!python/name:material.extensions.emoji.twemoji - emoji_generator: !!python/name:material.extensions.emoji.to_svg - - pymdownx.highlight: - anchor_linenums: true - line_spans: __span - pygments_lang_class: true - - pymdownx.inlinehilite - - pymdownx.keys - - pymdownx.mark - - pymdownx.smartsymbols - - pymdownx.superfences: - custom_fences: - - name: mermaid - class: mermaid - format: !!python/name:pymdownx.superfences.fence_code_format - - pymdownx.tabbed: - alternate_style: true - - pymdownx.tasklist: - custom_checkbox: true - - pymdownx.tilde - -extra_css: - - stylesheets/extra.css - -extra_javascript: - - javascripts/extra.js -``` - ---- - -## 3. Bilingual Suffix Rule (i18n) - -- English source files: `docs/guides/architecture.md`, `docs/index.md` -- Arabic source files: `docs/guides/architecture.ar.md`, `docs/index.ar.md` -- Rule: Never link directly to `.ar.md` from `.md` files; the `i18n` plugin handles language linking automatically via the header switcher. - ---- - -## 4. Local Apache Subfolder Routing (`.htaccess`) - -When hosting the documentation inside a subfolder during local Apache/WAMP development: - -```apache - - RewriteEngine On - RewriteRule ^site(/.*)?$ - [L] - RewriteCond %{REQUEST_FILENAME} !-f - RewriteRule ^(.*)$ site/$1 [L] - -``` -In production: upload the contents of `site/` directly into `public_html/docs/`. diff --git a/dist/tidyfactor-doc/references/memory/site-engines.md b/dist/tidyfactor-doc/references/memory/site-engines.md deleted file mode 100644 index 96f24d0..0000000 --- a/dist/tidyfactor-doc/references/memory/site-engines.md +++ /dev/null @@ -1,55 +0,0 @@ - -# Memory: Site Engines (Docsify vs. MkDocs Material) - -Technical evaluation matrix for documentation publishing engines supported by `tidyfactor-doc`. - -## Engine Comparison Matrix - -| Capability / Factor | โšก MkDocs Material (Static Compiler) | ๐Ÿ“„ Docsify (Client-Side SPA) | -|---|---|---| -| **Architecture** | Static Site Generator (Python Markdown) | Client-Side SPA (`marked.js` in browser) | -| **Output Type** | Pre-rendered static HTML (`site/`) | Single `index.html` fetching `.md` via AJAX | -| **Build Dependency** | Python 3.10+, `pip install mkdocs-material` | Zero build step, zero compiler required | -| **SEO & Crawlers** | 100/100 Perfect static HTML indexing | Limited (requires JS execution by bots) | -| **Performance & CWV** | Instant initial paint, pre-cached assets | Client-side fetch delay on slow mobile networks | -| **i18n & Localization** | Native parallel builds (`/` and `/ar/`) via `mkdocs-static-i18n` | Single page language or manual separate SPAs | -| **Search Engine** | Lunr.js pre-indexed offline search (bilingual) | In-browser client-side fuzzy search | -| **Styling & Theming** | Material for MkDocs + Neo-Brutalist CSS tokens | Custom CSS over Docsify default theme | -| **Code Highlighting** | Pygments build-time syntax highlighting + line spans | Prism.js client-side syntax highlighting | -| **Target Deployment** | Production doc portals, public SaaS products, multi-language sites | Rapid internal repo docs, single-file lightweight guides | - ---- - -## Decision Logic & Recommendation Rules - -1. **Choose MkDocs Material if:** - - The documentation has more than 10 pages or complex multi-level hierarchy. - - Public SEO visibility and search engine discoverability are critical. - - The project is bilingual (Arabic RTL + English LTR) requiring dedicated language switches. - - The local environment has Python installed (`python --version` returns 3.10+). - - Production hosting supports static directory routing (`public_html/documentation/`). - -2. **Choose Docsify if:** - - The developer or server environment has **no Python runtime** and requires zero installation. - - The project needs an instant browsable site by dropping a single `index.html` into `/docs`. - - The documentation is primarily for internal developers within a repository. - - The site is hosted on GitHub Pages with zero CI build workflows. - ---- - -## Two-Tier Multi-Language Documentation Pattern - -Both engines adhere to the TidyFactor Two-Tier Documentation standard: -- **Canonical Technical SSOT**: Full API specifications, architecture, and code deep-dives maintained in Canonical English (`/docs/en/` or root) with First-Class Arabic (`/docs/ar/`). -- **Localized Adoption Guides**: Quickstarts, tutorials, concepts, and command matrices for Tier 1/2 growth languages (`es`, `pt`, `fa`, `zh`, `de`, `fr`) providing high-conversion onboarding. - ---- - -## Toolchain Verification Command - -```bash -# Check if Python is available for MkDocs -python --version 2>&1 || python3 --version 2>&1 -``` -- If Python is available: recommend **MkDocs Material** as primary production track. -- If Python is not available: recommend **Docsify** as zero-dependency fallback. diff --git a/dist/tidyfactor-doc/references/memory/stacks/js-ts.md b/dist/tidyfactor-doc/references/memory/stacks/js-ts.md deleted file mode 100644 index 05461f2..0000000 --- a/dist/tidyfactor-doc/references/memory/stacks/js-ts.md +++ /dev/null @@ -1,45 +0,0 @@ -# Memory: stacks/js-ts - -Documentation conventions for JavaScript and TypeScript targets. Applies whenever the target's manifest is `package.json` and files are `.js`/`.mjs` (JS) or `.ts`/`.tsx` (TS). The two share JSDoc-style block syntax but differ in what needs restating. - -## JavaScript โ€” JSDoc (types belong in the comment, since the code itself is untyped) - -```js -/** - * - * - * @param {string} name Description. - * @param {number} [limit] Optional, defaults to undefined. - * @returns {Promise} Description of the resolved shape. - * @throws {RangeError} When . - */ -``` - -- Always include `@param`/`@returns` types โ€” JS has no compile-time types, so the comment is the only source of truth. -- Optional params use `[name]` bracket syntax. - -## TypeScript โ€” TSDoc (types live in the signature, don't restate them in the comment) - -```ts -/** - * - * - * @param name - Description only, no type (already in the signature). - * @param limit - Description only. - * @returns Description only. - * @throws {RangeError} When . - */ -function example(name: string, limit?: number): Promise { ... } -``` - -- Do NOT restate types already visible in the TS signature (`{string}`, `{number}`) โ€” that's a JSDoc habit that's redundant and can drift out of sync in TS. Description only after the `-`. -- Exported `interface`/`type` declarations get their own TSDoc block above the declaration, one line per member if the member itself isn't self-explanatory. - -## API reference formatting - -- Show the actual signature from the source (JS: as written; TS: full typed signature). -- For TS, prefer documenting the public exported types directly rather than re-describing them in prose. - -## What NOT to document inline - -- Non-exported (module-private) helper functions with obvious names: skip full blocks unless the error-patterns findings show them as a common failure point. diff --git a/dist/tidyfactor-doc/references/memory/stacks/php.md b/dist/tidyfactor-doc/references/memory/stacks/php.md deleted file mode 100644 index fd9f118..0000000 --- a/dist/tidyfactor-doc/references/memory/stacks/php.md +++ /dev/null @@ -1,33 +0,0 @@ -# Memory: stacks/php - -Documentation conventions for PHP targets. Applies whenever the target's manifest is `composer.json` or files are `.php`. - -## Inline comment format โ€” PHPDoc - -```php -/** - * - * - * - * - * @param string $name Description of the parameter. - * @param int|null $limit Description. Optional, defaults to null. - * @return array Description of the return shape. - * @throws InvalidArgumentException When . - */ -``` - -- One blank-line-separated summary + description, then tags. -- Always type-hint `@param`/`@return` even when the function itself is already typed โ€” PHPDoc types can be more specific (e.g. `array` vs. plain `array`). -- `@throws` is mandatory whenever the error-patterns findings show this function throwing โ€” never omit it to save space. -- Class-level docblocks get `@package` only if the project already uses PSR-4 namespacing conventions that make it meaningful; skip otherwise. - -## API reference formatting - -- Signatures shown as the actual PHP declaration line (with type hints), not a paraphrase: `public function createUser(string $email, ?int $roleId = null): User` -- Nullable/union types shown exactly as declared (`?int`, `int|string`). -- Static vs. instance methods both documented the same way โ€” note staticness in the signature itself, not as prose. - -## What NOT to document inline - -- Private/protected helper methods with obvious single-purpose names don't need a full docblock โ€” a one-line `// ` comment is enough, or none if truly self-evident. Full PHPDoc blocks are for the public API surface. diff --git a/dist/tidyfactor-doc/references/memory/stacks/react-vue-next.md b/dist/tidyfactor-doc/references/memory/stacks/react-vue-next.md deleted file mode 100644 index 4dc9b1c..0000000 --- a/dist/tidyfactor-doc/references/memory/stacks/react-vue-next.md +++ /dev/null @@ -1,50 +0,0 @@ -# Memory: stacks/react-vue-next - -Component-level documentation conventions, layered on top of `js-ts.md` (still use JSDoc/TSDoc block syntax โ€” this file adds what's specific to components, pages, and routes). - -## React โ€” props, not just function signature - -```tsx -/** - * - */ -interface ButtonProps { - /** Description of this prop. */ - label: string; - /** Optional, defaults to 'primary'. */ - variant?: 'primary' | 'secondary'; - /** Called when clicked. */ - onClick?: () => void; -} -``` - -- Document props via the `interface`/`type` block (per-member comments), not a `@param` list on the component function โ€” that's the idiomatic React pattern and what most tooling (Storybook, TypeDoc) expects. -- Note default values from the actual destructured defaults or `defaultProps`, not assumed. - -## Vue โ€” SFC ` -``` - -- For Options API components (no `