AboutSkillsServicesResumeProjectsKind wordsBlogFree Tools
Say hello
0~A7*}B##}=/%8D++1=0~%4{~=;<||DC&B5AFA~<*_29<{F6|1DC;~{5EADFB}/8|0_//{{=~E+9>CBE$_3%2E5217/50>4~_|_|#90820/8*1=8_8D|410|/~0|60<=987<1#++113~4=|1__10#F8*_E8E_<C/*C*F7B11/_~7;41<#01605;{<{#D#0
A}7*A8;F2#%||=00#>*|142330>0647=801F=#EE28%15~{47>629;<112EB00E38~##F&0$;<CE11<+;/*_&1F101C2C_+*0$78$3|$/+}F_<_9=FE6>8|%C=_4B~04E0=|670+64/0%>#4B+0}>#+*>31/8<98//%8|1=E$;$3~{%F_$*|&6+5400229
~_09710<5B18113/0%*{+D/0#0+>$62*;F}D1422CC7;410&_1#BE|$017;F16##8&%B0A9__=1_%%#0=A+B_5&;%0$%1870<%/&_%7<0D}#{D18+#A9/}~<B></<574C/_;ECE4511D3/E03&9A47F7><#$1_=4/*|<0A113B&|*}8}#6%=<0B1*{/==1
+1&=<7/<F0_;1B*~</780F1<$&3B/FBA2DF/{}F/|00%1;E/1A1&48;795#B/#0%|#0261119{&+$04/*3AE#=/5~1/+5|5C+F010};366&C1}41{0}%F72/F4%0|+|==&9=00432{47D;88+#=_69}E>E}_&EC1*~80~+<;|61F#*=/0A#<1}~00=}&|~
1#D+3E2ADBE0EF$%1F</44E19;60_<5F+AFBE707/;1~33*==<~285DB715{05{/4~=*~=5D095E$;=%&}0C0;*%E#C}0<0{1D516}30#<%&=*&D|DD1231<=701=0_%0*}/2C1{{>;{*C&01=170710=/E&1&_FC7/3A;2<~0|8>1|/9/C{F0%0_19{}4
<8E/&C4681~*;&2>_40D#;014&&/4{0*;933F~;%|&*B=#*{;+>6_*7D5&7D_+*3=%0*E60801>/1F7038;A058&E191%FD|/+=C|*0{11C+100|#{>}=%B=~+*%+_3}E~5*B{01;20316<+&71E2|&}~1&6*{19&51E118{*_D}$11;01CB11CD$}_48$
9<F={B4E1#3%5|E>}0<0F|0+110F0FD73F#A179_/~%_F917*;D$<12&;>BF%1>>$6>D|=|8#%2+&=04<>04_}5>/0<9BD<{%6|01~/&503$D7<}+3|E$$=>_51&+9C%{9;/>A|07%0_674C=~0&121F>0EFA0+800$+~E7C1*1160<E7$#E1>89~>_0*;
*0C#1|4B07/%3_0A1A$9CE679014/</>2~#9$03*%FB#0&||BE4F201&_~B;>%7411%60F1;91702E=B++1$76%05088D=+/998;341<>6/F645#}~*+6777E%7E+<2&A9B7>;$#1368|#4_00&==;%1&5AAC{A2A6*41_760|1C5159;179C}%F0#2>A0
%+8=05|%A*1}+$2+1&60=|AB1B/1%/37~D018+91{{A1E%%%DB%C38//$C>69&>FE0D6{0|1%8/%D7+1DD~$6B0&>&;;/C;68=5*;$$8}B6&+|1/&~E3%=0B5%D_5<270#%{|=D*&|>|421+70__%41;&C|}+{A;=0~{200802/_31_0}13<{7+/&51+9}
*#1&1>E00_5E+11$4;&A%|0$#00%15&|3B;<;#5FE50D}3{/4*B/*2B60|=#F$|ED#3~/C&+&23BA0%80>;~#=7<_011>E1{0#062BD08#9$9B0}A&+%F1&#EEF6~0}6%|09&{~}1_F/0/>;*$A>;1A=#2>91~1%#}=F+#A#+~+27|58=|61D|9*A;5#%0
~6&{5F{41+06D{5_B}~|*&CCF7#24|#+117+BF/%D}CCAA_D<1{0+~A3|9_+02$;1;>#%279AE&13556*10C55/$117213150<08A0~E/41#C_F2/0_%;754A33/}~01|3$<4B%312=E48DA<_84&8&7#/7*0B>&030E={/05%><{_|=7$%4F&<0>1%~/=
EAF4%|0F>95/5=3D7*B6{*0D|001*5%~5=$13<84%D7618<+55%|A70*161B=5//5/*}>F_5*B1#B430A{}AA;$C<E|75&>/}{F{0<=96$*61D}#37F31C6<<*}%CA{90010A&<A{+21=020F88/<}/<;519+E%D1/9$_A1_={EC173{0$3DA>2#A17>;#
~79/{}A86__6=+D7$>C6$7_F;*$+~*1<0;01+=6&~1/2{44010|/$==_~~B11>*0F5}70D+=6_1&#~/0+$B10B/2F7E=7E1F|{_+&>135=#/#/&=AD|~0|9&E%=C_B5<F0|<|<&31#<0_#C%5<;5E|#<9|A/~01<CE;%AC>36;0AF41D1<}7{9$8#51|4{
/<{FC31~1D=<E2}E02}~#>#D;B<DD&F//0C4E1B129D0A&01D2E659*|31<&5A2+D9E#1A2D4<B1#>_{BF0~1B6BEB2*<51<;*4/43;/}>%#~B/++2$1#+FF;6/7<=%67{1F1}#8+&B0CD~|%=F0D1~0*%16E78/A>%_AE;{|3=0&1_=51C~%}~01#011%
$13D%3&F~C30={00_;114=30<C$;=B%<>4|A02${}3#E>1~000~E32%96++<}&*2316B7E|&C6DC$E%107<0}3}BF=0=F+CD;/>FA0{_{=1}A~A5013}#49|01+2A}+F;8=7|10%/017#AD239&=56%351A#E$7~E|1878$97/;6314E=$01+C1/A*=}0<
0<7;<141D&0$//#00E$B091$<4181102;;*15/5EA1%53_$%}%C%6|900;00C+D0#86F*AB0{01197BB%/2>0&~1+=*D41<D7044BE~C47/>6#*0=3+2<50&D70E0E;||_#A;8D0+|&EA*15E391<&E21E#&==4}~*<7%C9{+><2EB}9>1A~AF0_9+#%8{
#3CC1#*5161_81+1341189_0;126B2E+5_6&10#2_1/C22|#~323C;/D&A0070;FE/|&7/|E${~0+}0A/##31_01;|61%0~}&89}1<9401B<1000{<D/900<%}_<*>37D={=%*C9|D066<0CE=9&*}{8B=~*217&>4AD>E=E8%01$~5*6042~1*12D>71$
6EA09FB23##0015F34~_#=|=%3356|+6%1||9$8$_02*|/04AD9_>&1D}C1C0$|9#1}1<+EBB13<A;=0>C1F9527>+D<>0&{}6F9/$_7~B0}<~1*7210%F$B++8~&}#_01&1<E0C3<|=00>=1_&DD_;614}};C2&|$;826>#A0;BA51AE9|10*1~{3${7;
01EF_&D+_1~D8E0%_0{00=0E;F;_$={{;<9D1;C0+C|1|~B{~5$1D61/F500/*}E20&=11C1>}4>BD*_<*6+|>5#9_7|9A1B5=8==%%0{6C}C422D#3409&1>2|931<C3E;~00A=$=~0;33_|2#C62+<;F>%%0B<|1B}+{E8>*D6$8B|1E94D0&2DE}*6_
}_<_463$57762}C00EC8*0%_D0%7$~{+${D~|13*00>C|911=8091=2_7~44=1/>793&;1A+3%8>D{$2=0D*};$0;{0B/438>A5;;=/#0~/6AC}E#EE%000B|370=1D</;E34<*5|2}_=B+%1;~3B4=*F$48|0751~>0F5_E}A2<101+F_7$8/}10C6~#{
>&06D3#F~0&>>8A86=1E;860>>%A7/<;_~B1=B_5|#1E81;;+1F0E08A>D00FB|3439+=>D><DEAD{3E161_8A0<*80B0C%$~*8~0*;10$~FCC>7C#C~8231~$/=03}0C0=811C*|9D*0+61F>+/>9{B}=}1$E&>}_&1|7%4<~A0B~B|8&999*A<$_341*
91=8/<B~D*+0}3E_2_>2#1/0%64=D+6DABC~~7DE_8F/<{0+1#=;/1001=5>219%7}4C21A3;#F8~>{}98C%A0*1~>DA5824{8111}0}}1<139<*6F0&{5EEA0#4BE30>~9*A/1+&1/0&F155#6206|#64}~C07|8C70%$0=1~$}*F%&<E7~+$$8|>>+C=
==9E%{2&2D;__<{2;5_~<=}1~={0~*>41/%<8|*8*3118/B=D>/_&;8C}0B_6}3_107D1<442/$1_E&/{%%/0#5E/6|93/0E&*=<011>0D_10>&C+B0_$06C4}<;2>1=}B}02DC=<011D1<C}C01*9_>>851F818>~%F/>11|6<//A2#DFA+8<B#C}1~/}
1>B{0/E3D{F&}&$&5>{111%A%F<#<0818+55D5/3B6=F/*D#|10*/21|97{_>1D*714;>%~=%|&<FDA+511178;C9;{1>0*+;$8D/>%4&8%D+D2#{{24_$%6910|17$>230~D*A44;~01%0+1D1#_>;D19{3<>2~C5/00E15%=B|0~03+*1A1_#%9A<10{
E#//759C4{>0101881_54FE;=~$$<3050FA>F09*BD0#8}4#ECC#0#19|E2011=|<$C1%{0}34~_02#4+0~#>2A7{&>0#=00CF_#$0DA0701/B_>6{C+442_><0CC;|>1C<8/B0*75}0C3A=}*~}6085{0=>*}6<=#2023<&<0$&$B=319048_{$}0}/<1
<+0$;*>$>E1+3=AF76$~97&F<#~30F&1B=051+A&$232<5*C<25E=0*F}&{6390<E*5|650&2}A>FB}4#=|1101}C8EBA&2}/500>A}EB$A}+0/1%0FFA9F<}%8D}0;%>>6C5{{1|F~/E+*E0;3~<;0=*>11+41*_7{F832+<F~_+143=}B$&E81{FC}91
&}/8|E_=|14%0003{1CE&C04}+_&E2}0D4761E89+0279;2B%6|&11$$193145+///|B1>8&_}1=/0E|B4{3EE&#&44B~<B01$}=$<#}8D*691$B4>F116A2F{1#A119&|E}1D|%+C01|=10{6>9B0BD}B;A$7AD*#A$F18A}_#EA|955|1};#{BD+&640
{F|04{#2A%C1D4~}C/2D$4_*#7{~#}11|$%106~|;9*+40943<A08%3~=7;/{|77~9%~_}>*1_;A;B3<0{9{/E=04E1/4|1;0#*}5~%0~6}0D;/2<>{<|~&+;};%A8*&0C_90BB26}08;01E4}C+=E6*8_$1|&;E7C$#&2|#}<3~==A_FA<45{1&<41%B_
0}FB+E45=_D/10%0&E4E&0F/{85$;>E2%>1<&8=<C=0$0+_D1C47$9DA8+*D9_3/78~#6651#;>E>B;_}FC+&1C56131102~/=;*04<;<A}~B<;F~;;D15}01BA4+0609E89_0C=<1>A99$1}%9;&D*3;07+2=*83A{;{0%&<*B/334B=>*70D}5|1B77=
%DB2+1%*D8~4*C/060=/65#5F<|BD%E11<>7+{=C3123+39%~5%0=1_E05FA|150F0*~+#E$0011__6&{30E0A51<|C6E1D%}0><2F65A***~#90*6|1A12&0_=%%52+=<=D|=<F~40<2#|={36BB~3%+7ED41=37*9+<1#A31>46C641=*0*|=+~428C3
const idea = 'worth sharing';
await write(idea);
publish()
NOTES ✦ IDEAS ✦ LESSONS ✦
The blog

Posts tagged“AI”

4 posts on this topic.

Claude CodeAIWorkflowClaude DesignDatabaseDesignGitNext.jsPostgresPrismaSkillsSpec-Driven DevelopmentSubagentsTypeScriptVersion ControlEngineeringProductShippingClaude CodeAIWorkflowClaude DesignDatabaseDesignGitNext.jsPostgresPrismaSkillsSpec-Driven DevelopmentSubagentsTypeScriptVersion ControlEngineeringProductShipping

Latest writing

All posts6Claude Code5AI4Workflow3Claude Design1Database1Design1Git1Next.js1Postgres1Prisma1Skills1Spec-Driven Development1Subagents1TypeScript1Version Control1
Two columns: change the plumbing (cheaper checkouts, server-side queries) and keep the guarantees (green trunk, always releasable, easy rollback)
Oct 16, 20263 min read

My take on Anthropic's Scion: git has to adapt, but not like this

Anthropic replaced git for their monorepo. I work with very large repos, and here is what I think carries over and what doesn't.

GitVersion ControlAIClaude Code
Read the post
An orchestrator with a small main context sends briefs to three subagents that read files and pages, and gets short lists back
Sep 29, 20264 min read

Let the expensive model think and the cheap one look things up

How I use subagents for discovery and lookups so the main agent keeps a clean context, and where subagents go wrong.

Claude CodeSubagentsAI
Before: one long CLAUDE.md holding every rule. After: a short CLAUDE.md, always-visible skill descriptions and skill bodies loaded only on a match
Sep 18, 20263 min read

CLAUDE.md or a skill? Where your rules should live

My CLAUDE.md kept growing every time Claude got something wrong. Moving task-specific rules into skills fixed most of it, with some caveats.

Claude CodeSkillsAI
Three stages of a spec: matching the code while building, still fine at shipping, then drifting months later while the agent still reads it as current
Sep 8, 20263 min read

Why I dropped OpenSpec for a few thin spec skills

Spec-driven development works, until the specs pile up. What I kept, what I dropped, and why stale specs quietly hurt your agent.

Claude CodeSpec-Driven DevelopmentAI

Got a project
in mind?

Say hello
contact@prageethsilva.com
AboutProjectsBlogFree ToolsContact
© 2026 Prageeth Silva