[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"summary-05578deb0a2e23aa-stop-babysitting-cursor-mastering-project-scoped-a-summary":3,"summaries-facets-categories":188,"summary-related-05578deb0a2e23aa-stop-babysitting-cursor-mastering-project-scoped-a-summary":4067},{"id":4,"title":5,"ai":6,"body":13,"categories":134,"created_at":136,"date_modified":136,"description":128,"extension":137,"faq":136,"featured":138,"kicker_label":136,"meta":139,"navigation":169,"path":170,"published_at":171,"question":136,"scraped_at":172,"seo":173,"sitemap":174,"source_id":175,"source_name":176,"source_type":177,"source_url":178,"stem":179,"tags":180,"thumbnail_url":136,"tldr":185,"tweet":136,"unknown_tags":186,"__hash__":187},"summaries\u002Fsummaries\u002F05578deb0a2e23aa-stop-babysitting-cursor-mastering-project-scoped-a-summary.md","Stop Babysitting Cursor: Mastering Project-Scoped AI Rules",{"provider":7,"model":8,"input_tokens":9,"output_tokens":10,"processing_time_ms":11,"cost_usd":12},"openrouter","google\u002Fgemini-3.1-flash-lite",7260,973,4948,0.0032745,{"type":14,"value":15,"toc":127},"minimark",[16,21,38,42,49,52,93,97],[17,18,20],"h2",{"id":19},"the-case-for-scoped-ai-rules","The Case for Scoped AI Rules",[22,23,24,25,29,30,33,34,37],"p",{},"Developers often waste time correcting the same AI mistakes—like ignoring naming conventions or using deprecated async patterns—because the AI lacks project-specific memory. Cursor Rules solve this by injecting instructions directly into the AI's system prompt. Instead of relying on a single, global ",[26,27,28],"code",{},".cursorrules"," file, you should use the newer ",[26,31,32],{},".mdc"," format located in ",[26,35,36],{},".cursor\u002Frules\u002F",". These files allow for granular scoping, ensuring the AI only receives relevant instructions based on the file type or task at hand.",[17,39,41],{"id":40},"implementing-effective-rule-architecture","Implementing Effective Rule Architecture",[22,43,44,45,48],{},"To optimize performance and token usage, move away from \"Always Apply\" rules, which consume tokens on every request. Instead, use \"Apply to Specific Files\" with glob patterns (e.g., ",[26,46,47],{},"**\u002F*Controller.cs",") to ensure rules only trigger when relevant.",[22,50,51],{},"Follow this recommended workflow for new projects:",[53,54,55,63,73,83],"ol",{},[56,57,58,62],"li",{},[59,60,61],"strong",{},"Define Requirements First:"," Lock in your stack (e.g., .NET 8, Clean Architecture) before writing code.",[56,64,65,68,69,72],{},[59,66,67],{},"Generate Starter Rules:"," Use the ",[26,70,71],{},"\u002Fcreate-rule"," command in the Cursor Agent chat to scaffold initial rules based on your specific stack.",[56,74,75,78,79,82],{},[59,76,77],{},"Curate and Adapt:"," Import community-standard rules from repositories like ",[26,80,81],{},"awesome-cursorrules"," via the Cursor Settings interface, but always customize them to your project's unique needs.",[56,84,85,88,89,92],{},[59,86,87],{},"Maintain a Living Ruleset:"," Create a ",[26,90,91],{},"meta.mdc"," rule that prompts the AI to suggest new rule files as you establish new patterns during development.",[17,94,96],{"id":95},"best-practices-for-rule-crafting","Best Practices for Rule Crafting",[98,99,100,106,115,121],"ul",{},[56,101,102,105],{},[59,103,104],{},"Be Explicit:"," Replace vague instructions like \"write clean code\" with concrete constraints such as \"Suffix async methods with Async\" or \"Never use .Result.\"",[56,107,108,111,112,114],{},[59,109,110],{},"Use Examples:"," Include before\u002Fafter code snippets within your ",[26,113,32],{}," files. LLMs perform significantly better when they can pattern-match against concrete examples.",[56,116,117,120],{},[59,118,119],{},"Keep Rules Focused:"," Limit each rule file to under 500 lines. If a file grows too large, split it by concern (e.g., separate files for architecture, testing, and naming).",[56,122,123,126],{},[59,124,125],{},"Treat Rules as Code:"," When the AI fails to follow a rule, don't just fix the code—update the rule file. You can even ask the AI to update its own rules based on the error.",{"title":128,"searchDepth":129,"depth":129,"links":130},"",2,[131,132,133],{"id":19,"depth":129,"text":20},{"id":40,"depth":129,"text":41},{"id":95,"depth":129,"text":96},[135],"Software Engineering",null,"md",false,{"content_references":140,"triage":164},[141,146,149,152,156,160],{"type":142,"title":143,"url":144,"context":145},"tool","Cursor","https:\u002F\u002Fcursor.com","recommended",{"type":142,"title":147,"url":148,"context":145},"cursor.directory","https:\u002F\u002Fcursor.directory\u002F",{"type":142,"title":81,"author":150,"url":151,"context":145},"PatrickJS","https:\u002F\u002Fgithub.com\u002FPatrickJS\u002Fawesome-cursorrules",{"type":142,"title":153,"author":154,"url":155,"context":145},"awesome-cursor-rules-mdc","sanjeed5","https:\u002F\u002Fgithub.com\u002Fsanjeed5\u002Fawesome-cursor-rules-mdc",{"type":142,"title":157,"author":158,"url":159,"context":145},"awesome-rules","continuedev","https:\u002F\u002Fgithub.com\u002Fcontinuedev\u002Fawesome-rules",{"type":142,"title":161,"author":162,"url":163,"context":145},"awesome-cursor","hao-ji-xing","https:\u002F\u002Fgithub.com\u002Fhao-ji-xing\u002Fawesome-cursor",{"relevance":165,"novelty":166,"quality":166,"actionability":165,"composite":167,"reasoning":168},5,4,4.55,"Category: AI Automation. The article provides a detailed framework for implementing project-scoped AI rules, addressing the pain point of developers wasting time on repetitive corrections. It offers a step-by-step workflow that can be directly applied to improve AI integration in software development.",true,"\u002Fsummaries\u002F05578deb0a2e23aa-stop-babysitting-cursor-mastering-project-scoped-a-summary","2026-05-18 14:35:50","2026-05-18 15:00:40",{"title":5,"description":128},{"loc":170},"05578deb0a2e23aa","Level Up Coding","article","https:\u002F\u002Flevelup.gitconnected.com\u002Fschr%C3%B6dingers-ai-part-15-stop-babysitting-your-ai-editor-make-it-follow-rules-6e199a2641ab?source=rss----5517fd7b58a6---4","summaries\u002F05578deb0a2e23aa-stop-babysitting-cursor-mastering-project-scoped-a-summary",[181,182,183,184],"ai-tools","coding","dev-productivity","software-engineering","Stop repeating instructions to your AI editor. Use scoped .mdc rule files to inject architecture, naming, and coding patterns automatically, ensuring consistency and saving tokens.",[183,184],"3AIUwX6UauYR1fH2Wqn9VrwFQTAAyZVkj2g8_vMvrM0",[189,192,195,198,201,204,206,208,210,212,214,216,219,221,223,225,227,229,231,233,235,237,239,241,243,246,249,251,253,255,257,259,262,264,266,268,270,272,274,276,278,280,282,284,287,289,291,293,295,297,299,301,303,305,307,309,311,313,315,317,319,321,323,325,327,329,331,333,335,337,339,341,343,345,347,349,351,353,355,357,359,361,363,365,367,369,371,373,375,377,379,381,383,385,387,389,391,393,395,397,399,401,403,405,407,409,411,413,415,417,419,421,423,425,427,429,431,433,435,437,439,441,443,445,447,449,451,453,455,457,459,461,463,465,467,469,471,473,475,477,479,481,483,485,487,489,491,493,495,497,499,501,503,505,507,509,511,513,515,517,519,521,523,525,527,529,531,533,535,537,539,541,543,545,547,549,551,553,555,557,559,561,563,565,567,569,571,573,575,577,579,581,583,585,587,589,591,593,595,597,599,601,603,605,607,609,611,613,615,617,619,621,623,625,627,629,631,633,635,637,639,641,643,645,647,649,651,653,655,657,659,661,663,665,667,669,671,673,675,677,679,681,683,685,687,689,691,693,695,697,699,701,703,705,707,709,711,713,715,717,719,721,723,725,727,729,731,733,735,737,739,741,743,745,747,749,751,753,755,757,759,761,763,765,767,769,771,773,775,777,779,781,783,785,787,789,791,793,795,797,799,801,803,805,807,809,811,813,815,817,819,821,823,825,827,829,831,833,835,837,839,841,843,845,847,849,851,853,855,857,859,861,863,865,867,869,871,873,875,877,879,881,883,885,887,889,891,893,895,897,899,901,903,905,907,909,911,913,915,917,919,921,923,925,927,929,931,933,935,937,939,941,943,945,947,949,951,953,955,957,959,961,963,965,967,969,971,973,975,977,979,981,983,985,987,989,991,993,995,997,999,1001,1003,1005,1007,1009,1011,1013,1015,1017,1019,1021,1023,1025,1027,1029,1031,1033,1035,1037,1039,1041,1043,1045,1047,1049,1051,1053,1055,1057,1059,1061,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1083,1085,1087,1089,1091,1093,1095,1097,1099,1101,1103,1105,1107,1109,1111,1113,1115,1117,1119,1121,1123,1125,1127,1129,1131,1133,1135,1137,1139,1141,1143,1145,1147,1149,1151,1153,1155,1157,1159,1161,1163,1165,1167,1169,1171,1173,1175,1177,1179,1181,1183,1185,1187,1189,1191,1193,1195,1197,1199,1201,1203,1205,1207,1209,1211,1213,1215,1217,1219,1221,1223,1225,1227,1229,1231,1233,1235,1237,1239,1241,1243,1245,1247,1249,1251,1253,1255,1257,1259,1261,1263,1265,1267,1269,1271,1273,1275,1277,1279,1281,1283,1285,1287,1289,1291,1293,1295,1297,1299,1301,1303,1305,1307,1309,1311,1313,1315,1317,1319,1321,1323,1325,1327,1329,1331,1333,1335,1337,1339,1341,1343,1345,1347,1349,1351,1353,1355,1357,1359,1361,1363,1365,1367,1369,1371,1373,1375,1377,1379,1381,1383,1385,1387,1389,1391,1393,1395,1397,1399,1401,1403,1405,1407,1409,1411,1413,1415,1417,1419,1421,1423,1425,1427,1429,1431,1433,1435,1437,1439,1441,1443,1445,1447,1449,1451,1453,1455,1457,1459,1461,1463,1465,1467,1469,1471,1473,1475,1477,1479,1481,1483,1485,1487,1489,1491,1493,1495,1497,1499,1501,1503,1505,1507,1509,1511,1513,1515,1517,1519,1521,1523,1525,1527,1529,1531,1533,1535,1537,1539,1541,1543,1545,1547,1549,1551,1553,1555,1557,1559,1561,1563,1565,1567,1569,1571,1573,1575,1577,1579,1581,1583,1585,1587,1589,1591,1593,1595,1597,1599,1601,1603,1605,1607,1609,1611,1613,1615,1617,1619,1621,1623,1625,1627,1629,1631,1633,1635,1637,1639,1641,1643,1645,1647,1649,1651,1653,1655,1657,1659,1661,1663,1665,1667,1669,1671,1673,1675,1677,1679,1681,1683,1685,1687,1689,1691,1693,1695,1697,1699,1701,1703,1705,1707,1709,1711,1713,1715,1717,1719,1721,1723,1725,1727,1729,1731,1733,1735,1737,1739,1741,1743,1745,1747,1749,1751,1753,1755,1757,1759,1761,1763,1765,1767,1769,1771,1773,1775,1777,1779,1781,1783,1785,1787,1789,1791,1793,1795,1797,1799,1801,1803,1805,1807,1809,1811,1813,1815,1817,1819,1821,1823,1825,1827,1829,1831,1833,1835,1837,1839,1841,1843,1845,1847,1849,1851,1853,1855,1857,1859,1861,1863,1865,1867,1869,1871,1873,1875,1877,1879,1881,1883,1885,1887,1889,1891,1893,1895,1897,1899,1901,1903,1905,1907,1909,1911,1913,1915,1917,1919,1921,1923,1925,1927,1929,1931,1933,1935,1937,1939,1941,1943,1945,1947,1949,1951,1953,1955,1957,1959,1961,1963,1965,1967,1969,1971,1973,1975,1977,1979,1981,1983,1985,1987,1989,1991,1993,1995,1997,1999,2001,2003,2005,2007,2009,2011,2013,2015,2017,2019,2021,2023,2025,2027,2029,2031,2033,2035,2037,2039,2041,2043,2045,2047,2049,2051,2053,2055,2057,2059,2061,2063,2065,2067,2069,2071,2073,2075,2077,2079,2081,2083,2085,2087,2089,2091,2093,2095,2097,2099,2101,2103,2105,2107,2109,2111,2113,2115,2117,2119,2121,2123,2125,2127,2129,2131,2133,2135,2137,2139,2141,2143,2145,2147,2149,2151,2153,2155,2157,2159,2161,2163,2165,2167,2169,2171,2173,2175,2177,2179,2181,2183,2185,2187,2189,2191,2193,2195,2197,2199,2201,2203,2205,2207,2209,2211,2213,2215,2217,2219,2221,2223,2225,2227,2229,2231,2233,2235,2237,2239,2241,2243,2245,2247,2249,2251,2253,2255,2257,2259,2261,2263,2265,2267,2269,2271,2273,2275,2277,2279,2281,2283,2285,2287,2289,2291,2293,2295,2297,2299,2301,2303,2305,2307,2309,2311,2313,2315,2317,2319,2321,2323,2325,2327,2329,2331,2333,2335,2337,2339,2341,2343,2345,2347,2349,2351,2353,2355,2357,2359,2361,2363,2365,2367,2369,2371,2373,2375,2377,2379,2381,2383,2385,2387,2389,2391,2393,2395,2397,2399,2401,2403,2405,2407,2409,2411,2413,2415,2417,2419,2421,2423,2425,2427,2429,2431,2433,2435,2437,2439,2441,2443,2445,2447,2449,2451,2453,2455,2457,2459,2461,2463,2465,2467,2469,2471,2473,2475,2477,2479,2481,2483,2485,2487,2489,2491,2493,2495,2497,2499,2501,2503,2505,2507,2509,2511,2513,2515,2517,2519,2521,2523,2525,2527,2529,2531,2533,2535,2537,2539,2541,2543,2545,2547,2549,2551,2553,2555,2557,2559,2561,2563,2565,2567,2569,2571,2573,2575,2577,2579,2581,2583,2585,2587,2589,2591,2593,2595,2597,2599,2601,2603,2605,2607,2609,2611,2613,2615,2617,2619,2621,2623,2625,2627,2629,2631,2633,2635,2637,2639,2641,2643,2645,2647,2649,2651,2653,2655,2657,2659,2661,2663,2665,2667,2669,2671,2673,2675,2677,2679,2681,2683,2685,2687,2689,2691,2693,2695,2697,2699,2701,2703,2705,2707,2709,2711,2713,2715,2717,2719,2721,2723,2725,2727,2729,2731,2733,2735,2737,2739,2741,2743,2745,2747,2749,2751,2753,2755,2757,2759,2761,2763,2765,2767,2769,2771,2773,2775,2777,2779,2781,2783,2785,2787,2789,2791,2793,2795,2797,2799,2801,2803,2805,2807,2809,2811,2813,2815,2817,2819,2821,2823,2825,2827,2829,2831,2833,2835,2837,2839,2841,2843,2845,2847,2849,2851,2853,2855,2857,2859,2861,2863,2865,2867,2869,2871,2873,2875,2877,2879,2881,2883,2885,2887,2889,2891,2893,2895,2897,2899,2901,2903,2905,2907,2909,2911,2913,2915,2917,2919,2921,2923,2925,2927,2929,2931,2933,2935,2937,2939,2941,2943,2945,2947,2949,2951,2953,2955,2957,2959,2961,2963,2965,2967,2969,2971,2973,2975,2977,2979,2981,2983,2985,2987,2989,2991,2993,2995,2997,2999,3001,3003,3005,3007,3009,3011,3013,3015,3017,3019,3021,3023,3025,3027,3029,3031,3033,3035,3037,3039,3041,3043,3045,3047,3049,3051,3053,3055,3057,3059,3061,3063,3065,3067,3069,3071,3073,3075,3077,3079,3081,3083,3085,3087,3089,3091,3093,3095,3097,3099,3101,3103,3105,3107,3109,3111,3113,3115,3117,3119,3121,3123,3125,3127,3129,3131,3133,3135,3137,3139,3141,3143,3145,3147,3149,3151,3153,3155,3157,3159,3161,3163,3165,3167,3169,3171,3173,3175,3177,3179,3181,3183,3185,3187,3189,3191,3193,3195,3197,3199,3201,3203,3205,3207,3209,3211,3213,3215,3217,3219,3221,3223,3225,3227,3229,3231,3233,3235,3237,3239,3241,3243,3245,3247,3249,3251,3253,3255,3257,3259,3261,3263,3265,3267,3269,3271,3273,3275,3277,3279,3281,3283,3285,3287,3289,3291,3293,3295,3297,3299,3301,3303,3305,3307,3309,3311,3313,3315,3317,3319,3321,3323,3325,3327,3329,3331,3333,3335,3337,3339,3341,3343,3345,3347,3349,3351,3353,3355,3357,3359,3361,3363,3365,3367,3369,3371,3373,3375,3377,3379,3381,3383,3385,3387,3389,3391,3393,3395,3397,3399,3401,3403,3405,3407,3409,3411,3413,3415,3417,3419,3421,3423,3425,3427,3429,3431,3433,3435,3437,3439,3441,3443,3445,3447,3449,3451,3453,3455,3457,3459,3461,3463,3465,3467,3469,3471,3473,3475,3477,3479,3481,3483,3485,3487,3489,3491,3493,3495,3497,3499,3501,3503,3505,3507,3509,3511,3513,3515,3517,3519,3521,3523,3525,3527,3529,3531,3533,3535,3537,3539,3541,3543,3545,3547,3549,3551,3553,3555,3557,3559,3561,3563,3565,3567,3569,3571,3573,3575,3577,3579,3581,3583,3585,3587,3589,3591,3593,3595,3597,3599,3601,3603,3605,3607,3609,3611,3613,3615,3617,3619,3621,3623,3625,3627,3629,3631,3633,3635,3637,3639,3641,3643,3645,3647,3649,3651,3653,3655,3657,3659,3661,3663,3665,3667,3669,3671,3673,3675,3677,3679,3681,3683,3685,3687,3689,3691,3693,3695,3697,3699,3701,3703,3705,3707,3709,3711,3713,3715,3717,3719,3721,3723,3725,3727,3729,3731,3733,3735,3737,3739,3741,3743,3745,3747,3749,3751,3753,3755,3757,3759,3761,3763,3765,3767,3769,3771,3773,3775,3777,3779,3781,3783,3785,3787,3789,3791,3793,3795,3797,3799,3801,3803,3805,3807,3809,3811,3813,3815,3817,3819,3821,3823,3825,3827,3829,3831,3833,3835,3837,3839,3841,3843,3845,3847,3849,3851,3853,3855,3857,3859,3861,3863,3865,3867,3869,3871,3873,3875,3877,3879,3881,3883,3885,3887,3889,3891,3893,3895,3897,3899,3901,3903,3905,3907,3909,3911,3913,3915,3917,3919,3921,3923,3925,3927,3929,3931,3933,3935,3937,3939,3941,3943,3945,3947,3949,3951,3953,3955,3957,3959,3961,3963,3965,3967,3969,3971,3973,3975,3977,3979,3981,3983,3985,3987,3989,3991,3993,3995,3997,3999,4001,4003,4005,4007,4009,4011,4013,4015,4017,4019,4021,4023,4025,4027,4029,4031,4033,4035,4037,4039,4041,4043,4045,4047,4049,4051,4053,4055,4057,4059,4061,4063,4065],{"categories":190},[191],"Developer Productivity",{"categories":193},[194],"Business & SaaS",{"categories":196},[197],"AI & LLMs",{"categories":199},[200],"AI Automation",{"categories":202},[203],"Product Strategy",{"categories":205},[197],{"categories":207},[191],{"categories":209},[194],{"categories":211},[],{"categories":213},[197],{"categories":215},[],{"categories":217},[218],"AI News & Trends",{"categories":220},[200],{"categories":222},[200],{"categories":224},[218],{"categories":226},[200],{"categories":228},[200],{"categories":230},[197],{"categories":232},[197],{"categories":234},[197],{"categories":236},[218],{"categories":238},[197],{"categories":240},[197],{"categories":242},[],{"categories":244},[245],"Design & Frontend",{"categories":247},[248],"Data Science & Visualization",{"categories":250},[218],{"categories":252},[],{"categories":254},[135],{"categories":256},[197],{"categories":258},[200],{"categories":260},[261],"Marketing & Growth",{"categories":263},[245],{"categories":265},[197],{"categories":267},[200],{"categories":269},[],{"categories":271},[],{"categories":273},[245],{"categories":275},[200],{"categories":277},[191],{"categories":279},[135],{"categories":281},[245],{"categories":283},[197],{"categories":285},[286],"DevOps & Cloud",{"categories":288},[200],{"categories":290},[218],{"categories":292},[],{"categories":294},[],{"categories":296},[200],{"categories":298},[135],{"categories":300},[],{"categories":302},[194],{"categories":304},[],{"categories":306},[],{"categories":308},[200],{"categories":310},[197],{"categories":312},[200],{"categories":314},[197],{"categories":316},[197],{"categories":318},[],{"categories":320},[135],{"categories":322},[],{"categories":324},[],{"categories":326},[135],{"categories":328},[],{"categories":330},[135],{"categories":332},[197],{"categories":334},[197],{"categories":336},[261],{"categories":338},[245],{"categories":340},[245],{"categories":342},[197],{"categories":344},[200],{"categories":346},[135],{"categories":348},[197],{"categories":350},[197],{"categories":352},[200],{"categories":354},[200],{"categories":356},[248],{"categories":358},[218],{"categories":360},[200],{"categories":362},[261],{"categories":364},[200],{"categories":366},[203],{"categories":368},[135],{"categories":370},[],{"categories":372},[200],{"categories":374},[],{"categories":376},[200],{"categories":378},[135],{"categories":380},[286],{"categories":382},[245],{"categories":384},[197],{"categories":386},[],{"categories":388},[],{"categories":390},[200],{"categories":392},[],{"categories":394},[197],{"categories":396},[],{"categories":398},[191],{"categories":400},[135],{"categories":402},[194],{"categories":404},[197],{"categories":406},[218],{"categories":408},[197],{"categories":410},[],{"categories":412},[197],{"categories":414},[],{"categories":416},[135],{"categories":418},[248],{"categories":420},[],{"categories":422},[197],{"categories":424},[245],{"categories":426},[],{"categories":428},[245],{"categories":430},[200],{"categories":432},[],{"categories":434},[197],{"categories":436},[200],{"categories":438},[218],{"categories":440},[194],{"categories":442},[197],{"categories":444},[],{"categories":446},[200],{"categories":448},[197],{"categories":450},[203],{"categories":452},[],{"categories":454},[197],{"categories":456},[200],{"categories":458},[200],{"categories":460},[],{"categories":462},[248],{"categories":464},[197],{"categories":466},[],{"categories":468},[191],{"categories":470},[194],{"categories":472},[197],{"categories":474},[200],{"categories":476},[135],{"categories":478},[197],{"categories":480},[],{"categories":482},[],{"categories":484},[197],{"categories":486},[197],{"categories":488},[],{"categories":490},[245],{"categories":492},[],{"categories":494},[197],{"categories":496},[],{"categories":498},[200],{"categories":500},[197],{"categories":502},[245],{"categories":504},[],{"categories":506},[197],{"categories":508},[197],{"categories":510},[194],{"categories":512},[200],{"categories":514},[197],{"categories":516},[245],{"categories":518},[200],{"categories":520},[],{"categories":522},[],{"categories":524},[218],{"categories":526},[],{"categories":528},[197],{"categories":530},[194,261],{"categories":532},[],{"categories":534},[197],{"categories":536},[200],{"categories":538},[],{"categories":540},[],{"categories":542},[197],{"categories":544},[],{"categories":546},[197],{"categories":548},[286],{"categories":550},[],{"categories":552},[218],{"categories":554},[245],{"categories":556},[],{"categories":558},[218],{"categories":560},[218],{"categories":562},[197],{"categories":564},[261],{"categories":566},[],{"categories":568},[194],{"categories":570},[200],{"categories":572},[],{"categories":574},[197,286],{"categories":576},[197],{"categories":578},[197],{"categories":580},[197],{"categories":582},[200],{"categories":584},[197,135],{"categories":586},[248],{"categories":588},[197],{"categories":590},[261],{"categories":592},[200],{"categories":594},[200],{"categories":596},[],{"categories":598},[200],{"categories":600},[197],{"categories":602},[197,194],{"categories":604},[],{"categories":606},[245],{"categories":608},[245],{"categories":610},[],{"categories":612},[],{"categories":614},[218],{"categories":616},[],{"categories":618},[191],{"categories":620},[135],{"categories":622},[197],{"categories":624},[245],{"categories":626},[200],{"categories":628},[135],{"categories":630},[218],{"categories":632},[245],{"categories":634},[],{"categories":636},[197],{"categories":638},[197],{"categories":640},[197],{"categories":642},[197],{"categories":644},[218],{"categories":646},[191],{"categories":648},[197],{"categories":650},[200],{"categories":652},[286],{"categories":654},[245],{"categories":656},[200],{"categories":658},[],{"categories":660},[],{"categories":662},[245],{"categories":664},[218],{"categories":666},[248],{"categories":668},[],{"categories":670},[197],{"categories":672},[197],{"categories":674},[194],{"categories":676},[197],{"categories":678},[197],{"categories":680},[218],{"categories":682},[],{"categories":684},[200],{"categories":686},[135],{"categories":688},[],{"categories":690},[197],{"categories":692},[197],{"categories":694},[200],{"categories":696},[],{"categories":698},[],{"categories":700},[197],{"categories":702},[],{"categories":704},[194],{"categories":706},[200],{"categories":708},[200],{"categories":710},[],{"categories":712},[191],{"categories":714},[197],{"categories":716},[194],{"categories":718},[218],{"categories":720},[191],{"categories":722},[],{"categories":724},[],{"categories":726},[],{"categories":728},[218],{"categories":730},[218],{"categories":732},[],{"categories":734},[],{"categories":736},[194],{"categories":738},[],{"categories":740},[],{"categories":742},[191],{"categories":744},[],{"categories":746},[261],{"categories":748},[200],{"categories":750},[194],{"categories":752},[200],{"categories":754},[135],{"categories":756},[],{"categories":758},[203],{"categories":760},[245],{"categories":762},[135],{"categories":764},[197],{"categories":766},[200],{"categories":768},[194],{"categories":770},[197],{"categories":772},[],{"categories":774},[],{"categories":776},[135],{"categories":778},[248],{"categories":780},[203],{"categories":782},[200],{"categories":784},[197],{"categories":786},[],{"categories":788},[286],{"categories":790},[],{"categories":792},[200],{"categories":794},[],{"categories":796},[191],{"categories":798},[],{"categories":800},[197],{"categories":802},[197],{"categories":804},[245],{"categories":806},[261],{"categories":808},[200],{"categories":810},[],{"categories":812},[191],{"categories":814},[],{"categories":816},[218],{"categories":818},[197,286],{"categories":820},[197],{"categories":822},[218],{"categories":824},[197],{"categories":826},[194],{"categories":828},[197],{"categories":830},[],{"categories":832},[197],{"categories":834},[194],{"categories":836},[],{"categories":838},[135],{"categories":840},[245],{"categories":842},[218],{"categories":844},[248],{"categories":846},[191],{"categories":848},[197],{"categories":850},[200],{"categories":852},[135],{"categories":854},[],{"categories":856},[],{"categories":858},[203],{"categories":860},[],{"categories":862},[197],{"categories":864},[],{"categories":866},[245],{"categories":868},[135],{"categories":870},[245],{"categories":872},[197],{"categories":874},[245],{"categories":876},[],{"categories":878},[],{"categories":880},[218],{"categories":882},[200],{"categories":884},[197],{"categories":886},[197],{"categories":888},[197],{"categories":890},[194],{"categories":892},[197],{"categories":894},[],{"categories":896},[135],{"categories":898},[135],{"categories":900},[194],{"categories":902},[],{"categories":904},[197],{"categories":906},[197],{"categories":908},[194],{"categories":910},[218],{"categories":912},[261],{"categories":914},[197],{"categories":916},[200],{"categories":918},[],{"categories":920},[245],{"categories":922},[],{"categories":924},[197],{"categories":926},[197],{"categories":928},[],{"categories":930},[194],{"categories":932},[200],{"categories":934},[],{"categories":936},[286],{"categories":938},[248],{"categories":940},[135],{"categories":942},[261],{"categories":944},[197],{"categories":946},[135],{"categories":948},[200],{"categories":950},[],{"categories":952},[],{"categories":954},[200],{"categories":956},[191],{"categories":958},[200],{"categories":960},[203],{"categories":962},[194],{"categories":964},[],{"categories":966},[197],{"categories":968},[203],{"categories":970},[197],{"categories":972},[197],{"categories":974},[261],{"categories":976},[197],{"categories":978},[245],{"categories":980},[200],{"categories":982},[],{"categories":984},[],{"categories":986},[286],{"categories":988},[135],{"categories":990},[],{"categories":992},[200],{"categories":994},[197],{"categories":996},[245,197],{"categories":998},[191],{"categories":1000},[],{"categories":1002},[197],{"categories":1004},[191],{"categories":1006},[245],{"categories":1008},[200],{"categories":1010},[135],{"categories":1012},[],{"categories":1014},[197],{"categories":1016},[],{"categories":1018},[],{"categories":1020},[197],{"categories":1022},[191],{"categories":1024},[],{"categories":1026},[200],{"categories":1028},[203],{"categories":1030},[197],{"categories":1032},[197],{"categories":1034},[197],{"categories":1036},[245],{"categories":1038},[200],{"categories":1040},[286],{"categories":1042},[245],{"categories":1044},[200],{"categories":1046},[197],{"categories":1048},[197],{"categories":1050},[197],{"categories":1052},[135],{"categories":1054},[],{"categories":1056},[218],{"categories":1058},[],{"categories":1060},[203],{"categories":1062},[200],{"categories":1064},[245],{"categories":1066},[197],{"categories":1068},[200],{"categories":1070},[135],{"categories":1072},[245],{"categories":1074},[200],{"categories":1076},[218],{"categories":1078},[],{"categories":1080},[197],{"categories":1082},[245],{"categories":1084},[197],{"categories":1086},[191],{"categories":1088},[218],{"categories":1090},[197],{"categories":1092},[261],{"categories":1094},[197],{"categories":1096},[200],{"categories":1098},[197],{"categories":1100},[200],{"categories":1102},[200],{"categories":1104},[197],{"categories":1106},[200],{"categories":1108},[245],{"categories":1110},[197],{"categories":1112},[],{"categories":1114},[],{"categories":1116},[135],{"categories":1118},[],{"categories":1120},[191],{"categories":1122},[286],{"categories":1124},[197],{"categories":1126},[],{"categories":1128},[191],{"categories":1130},[194],{"categories":1132},[261],{"categories":1134},[],{"categories":1136},[194],{"categories":1138},[],{"categories":1140},[197],{"categories":1142},[],{"categories":1144},[],{"categories":1146},[],{"categories":1148},[],{"categories":1150},[197],{"categories":1152},[200],{"categories":1154},[286],{"categories":1156},[191],{"categories":1158},[135],{"categories":1160},[197],{"categories":1162},[135],{"categories":1164},[203],{"categories":1166},[197],{"categories":1168},[261],{"categories":1170},[194],{"categories":1172},[197],{"categories":1174},[197],{"categories":1176},[197],{"categories":1178},[197,191],{"categories":1180},[135],{"categories":1182},[135],{"categories":1184},[245],{"categories":1186},[197],{"categories":1188},[],{"categories":1190},[],{"categories":1192},[],{"categories":1194},[135],{"categories":1196},[248],{"categories":1198},[218],{"categories":1200},[245],{"categories":1202},[],{"categories":1204},[197],{"categories":1206},[197],{"categories":1208},[],{"categories":1210},[200],{"categories":1212},[197],{"categories":1214},[],{"categories":1216},[200],{"categories":1218},[197],{"categories":1220},[194],{"categories":1222},[],{"categories":1224},[191],{"categories":1226},[197],{"categories":1228},[191],{"categories":1230},[197],{"categories":1232},[135],{"categories":1234},[261],{"categories":1236},[200],{"categories":1238},[197,245],{"categories":1240},[218],{"categories":1242},[197],{"categories":1244},[245],{"categories":1246},[],{"categories":1248},[135],{"categories":1250},[286],{"categories":1252},[245],{"categories":1254},[200],{"categories":1256},[],{"categories":1258},[],{"categories":1260},[],{"categories":1262},[],{"categories":1264},[135],{"categories":1266},[200],{"categories":1268},[200],{"categories":1270},[286],{"categories":1272},[197],{"categories":1274},[197],{"categories":1276},[200],{"categories":1278},[197],{"categories":1280},[197],{"categories":1282},[],{"categories":1284},[245],{"categories":1286},[],{"categories":1288},[],{"categories":1290},[200],{"categories":1292},[],{"categories":1294},[],{"categories":1296},[261],{"categories":1298},[261],{"categories":1300},[200],{"categories":1302},[135],{"categories":1304},[],{"categories":1306},[197],{"categories":1308},[197],{"categories":1310},[135],{"categories":1312},[245],{"categories":1314},[245],{"categories":1316},[200],{"categories":1318},[191],{"categories":1320},[197],{"categories":1322},[245],{"categories":1324},[245],{"categories":1326},[200],{"categories":1328},[200],{"categories":1330},[197],{"categories":1332},[],{"categories":1334},[],{"categories":1336},[197],{"categories":1338},[200],{"categories":1340},[218],{"categories":1342},[135],{"categories":1344},[197],{"categories":1346},[191],{"categories":1348},[197],{"categories":1350},[],{"categories":1352},[200],{"categories":1354},[200],{"categories":1356},[],{"categories":1358},[197],{"categories":1360},[191],{"categories":1362},[197],{"categories":1364},[191],{"categories":1366},[191],{"categories":1368},[],{"categories":1370},[],{"categories":1372},[200],{"categories":1374},[218],{"categories":1376},[200],{"categories":1378},[197],{"categories":1380},[197],{"categories":1382},[218],{"categories":1384},[248],{"categories":1386},[203],{"categories":1388},[218],{"categories":1390},[245],{"categories":1392},[],{"categories":1394},[],{"categories":1396},[218],{"categories":1398},[],{"categories":1400},[],{"categories":1402},[],{"categories":1404},[],{"categories":1406},[135],{"categories":1408},[248],{"categories":1410},[],{"categories":1412},[197],{"categories":1414},[197],{"categories":1416},[248],{"categories":1418},[135],{"categories":1420},[],{"categories":1422},[],{"categories":1424},[200],{"categories":1426},[218],{"categories":1428},[218],{"categories":1430},[200],{"categories":1432},[191],{"categories":1434},[197,286],{"categories":1436},[],{"categories":1438},[245],{"categories":1440},[191],{"categories":1442},[200],{"categories":1444},[245],{"categories":1446},[],{"categories":1448},[200],{"categories":1450},[200],{"categories":1452},[197],{"categories":1454},[261],{"categories":1456},[135],{"categories":1458},[245],{"categories":1460},[],{"categories":1462},[200],{"categories":1464},[197],{"categories":1466},[200],{"categories":1468},[200],{"categories":1470},[200],{"categories":1472},[261],{"categories":1474},[197],{"categories":1476},[200],{"categories":1478},[197],{"categories":1480},[],{"categories":1482},[261],{"categories":1484},[218],{"categories":1486},[200],{"categories":1488},[],{"categories":1490},[],{"categories":1492},[197],{"categories":1494},[200],{"categories":1496},[218],{"categories":1498},[200],{"categories":1500},[200],{"categories":1502},[],{"categories":1504},[197],{"categories":1506},[],{"categories":1508},[],{"categories":1510},[200],{"categories":1512},[],{"categories":1514},[],{"categories":1516},[248],{"categories":1518},[197],{"categories":1520},[248],{"categories":1522},[218],{"categories":1524},[197],{"categories":1526},[197],{"categories":1528},[200],{"categories":1530},[197],{"categories":1532},[],{"categories":1534},[],{"categories":1536},[286],{"categories":1538},[197],{"categories":1540},[],{"categories":1542},[],{"categories":1544},[191],{"categories":1546},[],{"categories":1548},[],{"categories":1550},[197],{"categories":1552},[],{"categories":1554},[],{"categories":1556},[135],{"categories":1558},[218],{"categories":1560},[261],{"categories":1562},[194],{"categories":1564},[197],{"categories":1566},[197],{"categories":1568},[194],{"categories":1570},[],{"categories":1572},[245],{"categories":1574},[200],{"categories":1576},[194],{"categories":1578},[197],{"categories":1580},[197],{"categories":1582},[191],{"categories":1584},[],{"categories":1586},[191],{"categories":1588},[197],{"categories":1590},[261],{"categories":1592},[200],{"categories":1594},[218],{"categories":1596},[194],{"categories":1598},[197],{"categories":1600},[197],{"categories":1602},[200],{"categories":1604},[],{"categories":1606},[197],{"categories":1608},[191],{"categories":1610},[197],{"categories":1612},[197],{"categories":1614},[],{"categories":1616},[218],{"categories":1618},[197],{"categories":1620},[],{"categories":1622},[194],{"categories":1624},[194],{"categories":1626},[197],{"categories":1628},[],{"categories":1630},[],{"categories":1632},[],{"categories":1634},[197],{"categories":1636},[218],{"categories":1638},[],{"categories":1640},[286],{"categories":1642},[197],{"categories":1644},[],{"categories":1646},[197],{"categories":1648},[197],{"categories":1650},[197],{"categories":1652},[197,286],{"categories":1654},[197],{"categories":1656},[197],{"categories":1658},[245],{"categories":1660},[200],{"categories":1662},[],{"categories":1664},[200],{"categories":1666},[200],{"categories":1668},[197],{"categories":1670},[197],{"categories":1672},[197],{"categories":1674},[191],{"categories":1676},[191],{"categories":1678},[135],{"categories":1680},[245],{"categories":1682},[200],{"categories":1684},[],{"categories":1686},[197],{"categories":1688},[218],{"categories":1690},[197],{"categories":1692},[194],{"categories":1694},[],{"categories":1696},[286],{"categories":1698},[245],{"categories":1700},[245],{"categories":1702},[200],{"categories":1704},[218],{"categories":1706},[200],{"categories":1708},[197],{"categories":1710},[],{"categories":1712},[197],{"categories":1714},[],{"categories":1716},[],{"categories":1718},[197],{"categories":1720},[197],{"categories":1722},[197],{"categories":1724},[200],{"categories":1726},[197],{"categories":1728},[197],{"categories":1730},[],{"categories":1732},[248],{"categories":1734},[200],{"categories":1736},[],{"categories":1738},[],{"categories":1740},[197],{"categories":1742},[218],{"categories":1744},[],{"categories":1746},[245],{"categories":1748},[286],{"categories":1750},[218],{"categories":1752},[135],{"categories":1754},[135],{"categories":1756},[218],{"categories":1758},[218],{"categories":1760},[286],{"categories":1762},[],{"categories":1764},[218],{"categories":1766},[197],{"categories":1768},[191],{"categories":1770},[197],{"categories":1772},[218],{"categories":1774},[],{"categories":1776},[135],{"categories":1778},[248],{"categories":1780},[197],{"categories":1782},[218],{"categories":1784},[135],{"categories":1786},[200],{"categories":1788},[218],{"categories":1790},[286],{"categories":1792},[200],{"categories":1794},[197],{"categories":1796},[197],{"categories":1798},[197],{"categories":1800},[],{"categories":1802},[194],{"categories":1804},[],{"categories":1806},[],{"categories":1808},[197],{"categories":1810},[197],{"categories":1812},[197],{"categories":1814},[197],{"categories":1816},[],{"categories":1818},[248],{"categories":1820},[191],{"categories":1822},[],{"categories":1824},[197],{"categories":1826},[197],{"categories":1828},[286],{"categories":1830},[286],{"categories":1832},[],{"categories":1834},[200],{"categories":1836},[218],{"categories":1838},[218],{"categories":1840},[197],{"categories":1842},[200],{"categories":1844},[],{"categories":1846},[245],{"categories":1848},[197],{"categories":1850},[197],{"categories":1852},[],{"categories":1854},[197],{"categories":1856},[],{"categories":1858},[135],{"categories":1860},[286],{"categories":1862},[197],{"categories":1864},[135],{"categories":1866},[194],{"categories":1868},[197],{"categories":1870},[],{"categories":1872},[200],{"categories":1874},[191],{"categories":1876},[191],{"categories":1878},[],{"categories":1880},[197],{"categories":1882},[245],{"categories":1884},[200],{"categories":1886},[],{"categories":1888},[197],{"categories":1890},[197],{"categories":1892},[200],{"categories":1894},[],{"categories":1896},[200],{"categories":1898},[135],{"categories":1900},[],{"categories":1902},[197],{"categories":1904},[],{"categories":1906},[197],{"categories":1908},[],{"categories":1910},[197],{"categories":1912},[197],{"categories":1914},[],{"categories":1916},[197],{"categories":1918},[218],{"categories":1920},[197],{"categories":1922},[197],{"categories":1924},[191],{"categories":1926},[197],{"categories":1928},[218],{"categories":1930},[200],{"categories":1932},[],{"categories":1934},[197],{"categories":1936},[245],{"categories":1938},[261],{"categories":1940},[197],{"categories":1942},[],{"categories":1944},[],{"categories":1946},[],{"categories":1948},[191],{"categories":1950},[218],{"categories":1952},[200],{"categories":1954},[197],{"categories":1956},[245],{"categories":1958},[200],{"categories":1960},[],{"categories":1962},[200],{"categories":1964},[],{"categories":1966},[197],{"categories":1968},[200],{"categories":1970},[197],{"categories":1972},[],{"categories":1974},[197],{"categories":1976},[197],{"categories":1978},[218],{"categories":1980},[245],{"categories":1982},[200],{"categories":1984},[245],{"categories":1986},[194],{"categories":1988},[],{"categories":1990},[],{"categories":1992},[197],{"categories":1994},[191],{"categories":1996},[218],{"categories":1998},[],{"categories":2000},[245],{"categories":2002},[],{"categories":2004},[135],{"categories":2006},[135],{"categories":2008},[245],{"categories":2010},[],{"categories":2012},[197],{"categories":2014},[],{"categories":2016},[261],{"categories":2018},[197],{"categories":2020},[286],{"categories":2022},[135],{"categories":2024},[],{"categories":2026},[200],{"categories":2028},[197],{"categories":2030},[191],{"categories":2032},[200],{"categories":2034},[200],{"categories":2036},[197],{"categories":2038},[],{"categories":2040},[191],{"categories":2042},[197],{"categories":2044},[194],{"categories":2046},[135],{"categories":2048},[245],{"categories":2050},[],{"categories":2052},[],{"categories":2054},[],{"categories":2056},[200],{"categories":2058},[245],{"categories":2060},[218],{"categories":2062},[197],{"categories":2064},[218],{"categories":2066},[245],{"categories":2068},[],{"categories":2070},[245],{"categories":2072},[218],{"categories":2074},[194],{"categories":2076},[135],{"categories":2078},[197],{"categories":2080},[218],{"categories":2082},[261],{"categories":2084},[],{"categories":2086},[],{"categories":2088},[248],{"categories":2090},[197,135],{"categories":2092},[218],{"categories":2094},[197],{"categories":2096},[200],{"categories":2098},[197],{"categories":2100},[200],{"categories":2102},[197],{"categories":2104},[197],{"categories":2106},[],{"categories":2108},[135],{"categories":2110},[197],{"categories":2112},[248],{"categories":2114},[200],{"categories":2116},[261],{"categories":2118},[286],{"categories":2120},[],{"categories":2122},[191],{"categories":2124},[200],{"categories":2126},[200],{"categories":2128},[135],{"categories":2130},[197],{"categories":2132},[197],{"categories":2134},[],{"categories":2136},[],{"categories":2138},[],{"categories":2140},[286],{"categories":2142},[218],{"categories":2144},[197],{"categories":2146},[197],{"categories":2148},[197],{"categories":2150},[],{"categories":2152},[248],{"categories":2154},[194],{"categories":2156},[],{"categories":2158},[200],{"categories":2160},[286],{"categories":2162},[],{"categories":2164},[245],{"categories":2166},[245],{"categories":2168},[],{"categories":2170},[135],{"categories":2172},[197],{"categories":2174},[245],{"categories":2176},[197],{"categories":2178},[],{"categories":2180},[218],{"categories":2182},[197],{"categories":2184},[197],{"categories":2186},[245],{"categories":2188},[200],{"categories":2190},[218],{"categories":2192},[],{"categories":2194},[200],{"categories":2196},[245],{"categories":2198},[197],{"categories":2200},[],{"categories":2202},[197],{"categories":2204},[197],{"categories":2206},[286],{"categories":2208},[218],{"categories":2210},[248],{"categories":2212},[248],{"categories":2214},[],{"categories":2216},[],{"categories":2218},[],{"categories":2220},[200],{"categories":2222},[135],{"categories":2224},[135],{"categories":2226},[197],{"categories":2228},[],{"categories":2230},[],{"categories":2232},[197],{"categories":2234},[],{"categories":2236},[200],{"categories":2238},[197],{"categories":2240},[],{"categories":2242},[197],{"categories":2244},[194],{"categories":2246},[197],{"categories":2248},[261],{"categories":2250},[200],{"categories":2252},[197],{"categories":2254},[197],{"categories":2256},[197],{"categories":2258},[135],{"categories":2260},[],{"categories":2262},[218],{"categories":2264},[200],{"categories":2266},[],{"categories":2268},[218],{"categories":2270},[200],{"categories":2272},[200],{"categories":2274},[],{"categories":2276},[194],{"categories":2278},[200],{"categories":2280},[],{"categories":2282},[197],{"categories":2284},[191],{"categories":2286},[218],{"categories":2288},[286],{"categories":2290},[200],{"categories":2292},[200],{"categories":2294},[191],{"categories":2296},[],{"categories":2298},[197],{"categories":2300},[],{"categories":2302},[],{"categories":2304},[245],{"categories":2306},[197,194],{"categories":2308},[197],{"categories":2310},[],{"categories":2312},[191],{"categories":2314},[248],{"categories":2316},[197],{"categories":2318},[135],{"categories":2320},[197],{"categories":2322},[200],{"categories":2324},[197],{"categories":2326},[197],{"categories":2328},[218],{"categories":2330},[200],{"categories":2332},[],{"categories":2334},[],{"categories":2336},[200],{"categories":2338},[197],{"categories":2340},[286],{"categories":2342},[],{"categories":2344},[197],{"categories":2346},[200],{"categories":2348},[],{"categories":2350},[200],{"categories":2352},[197],{"categories":2354},[261],{"categories":2356},[248],{"categories":2358},[200],{"categories":2360},[197],{"categories":2362},[286],{"categories":2364},[],{"categories":2366},[197],{"categories":2368},[261],{"categories":2370},[245],{"categories":2372},[197],{"categories":2374},[197],{"categories":2376},[],{"categories":2378},[261],{"categories":2380},[218],{"categories":2382},[197],{"categories":2384},[197],{"categories":2386},[191],{"categories":2388},[],{"categories":2390},[],{"categories":2392},[245],{"categories":2394},[197],{"categories":2396},[248],{"categories":2398},[261],{"categories":2400},[261],{"categories":2402},[218],{"categories":2404},[],{"categories":2406},[],{"categories":2408},[197],{"categories":2410},[197],{"categories":2412},[197],{"categories":2414},[],{"categories":2416},[197,135],{"categories":2418},[218],{"categories":2420},[200],{"categories":2422},[135],{"categories":2424},[197],{"categories":2426},[191],{"categories":2428},[],{"categories":2430},[],{"categories":2432},[191],{"categories":2434},[135],{"categories":2436},[261],{"categories":2438},[197],{"categories":2440},[],{"categories":2442},[245,197],{"categories":2444},[286],{"categories":2446},[191],{"categories":2448},[],{"categories":2450},[194],{"categories":2452},[194],{"categories":2454},[197],{"categories":2456},[197],{"categories":2458},[135],{"categories":2460},[200],{"categories":2462},[218],{"categories":2464},[261],{"categories":2466},[245],{"categories":2468},[197],{"categories":2470},[197],{"categories":2472},[197],{"categories":2474},[191],{"categories":2476},[197],{"categories":2478},[200],{"categories":2480},[218],{"categories":2482},[],{"categories":2484},[],{"categories":2486},[248],{"categories":2488},[135],{"categories":2490},[197],{"categories":2492},[245],{"categories":2494},[197],{"categories":2496},[248],{"categories":2498},[197],{"categories":2500},[197],{"categories":2502},[197],{"categories":2504},[200],{"categories":2506},[200],{"categories":2508},[197,194],{"categories":2510},[],{"categories":2512},[245],{"categories":2514},[],{"categories":2516},[197],{"categories":2518},[218],{"categories":2520},[191],{"categories":2522},[191],{"categories":2524},[200],{"categories":2526},[197],{"categories":2528},[197],{"categories":2530},[194],{"categories":2532},[135],{"categories":2534},[261],{"categories":2536},[197],{"categories":2538},[],{"categories":2540},[218],{"categories":2542},[197],{"categories":2544},[197],{"categories":2546},[197],{"categories":2548},[197],{"categories":2550},[218],{"categories":2552},[135],{"categories":2554},[135],{"categories":2556},[197],{"categories":2558},[197],{"categories":2560},[200],{"categories":2562},[218],{"categories":2564},[197],{"categories":2566},[245],{"categories":2568},[197],{"categories":2570},[197],{"categories":2572},[286],{"categories":2574},[197],{"categories":2576},[203],{"categories":2578},[200],{"categories":2580},[197],{"categories":2582},[218],{"categories":2584},[200],{"categories":2586},[261],{"categories":2588},[197],{"categories":2590},[],{"categories":2592},[197],{"categories":2594},[],{"categories":2596},[],{"categories":2598},[],{"categories":2600},[194],{"categories":2602},[197],{"categories":2604},[200],{"categories":2606},[218],{"categories":2608},[218],{"categories":2610},[218],{"categories":2612},[218],{"categories":2614},[],{"categories":2616},[191],{"categories":2618},[200],{"categories":2620},[218],{"categories":2622},[197],{"categories":2624},[191],{"categories":2626},[200],{"categories":2628},[197],{"categories":2630},[197,200],{"categories":2632},[200],{"categories":2634},[286],{"categories":2636},[218],{"categories":2638},[218],{"categories":2640},[200],{"categories":2642},[197],{"categories":2644},[],{"categories":2646},[218],{"categories":2648},[261],{"categories":2650},[191],{"categories":2652},[197],{"categories":2654},[197],{"categories":2656},[],{"categories":2658},[135],{"categories":2660},[],{"categories":2662},[191],{"categories":2664},[200],{"categories":2666},[218],{"categories":2668},[197],{"categories":2670},[218],{"categories":2672},[191],{"categories":2674},[218],{"categories":2676},[218],{"categories":2678},[],{"categories":2680},[194],{"categories":2682},[200],{"categories":2684},[218],{"categories":2686},[218],{"categories":2688},[218],{"categories":2690},[218],{"categories":2692},[218],{"categories":2694},[218],{"categories":2696},[218],{"categories":2698},[218],{"categories":2700},[218],{"categories":2702},[218],{"categories":2704},[248],{"categories":2706},[191],{"categories":2708},[197],{"categories":2710},[197],{"categories":2712},[],{"categories":2714},[197,191],{"categories":2716},[],{"categories":2718},[200],{"categories":2720},[218],{"categories":2722},[200],{"categories":2724},[197],{"categories":2726},[197],{"categories":2728},[197],{"categories":2730},[197],{"categories":2732},[197],{"categories":2734},[200],{"categories":2736},[194],{"categories":2738},[],{"categories":2740},[245],{"categories":2742},[218],{"categories":2744},[197],{"categories":2746},[],{"categories":2748},[],{"categories":2750},[200],{"categories":2752},[245],{"categories":2754},[197],{"categories":2756},[],{"categories":2758},[197],{"categories":2760},[],{"categories":2762},[261],{"categories":2764},[197],{"categories":2766},[],{"categories":2768},[],{"categories":2770},[218],{"categories":2772},[191],{"categories":2774},[197],{"categories":2776},[194],{"categories":2778},[197],{"categories":2780},[194],{"categories":2782},[245],{"categories":2784},[],{"categories":2786},[218],{"categories":2788},[],{"categories":2790},[245],{"categories":2792},[197],{"categories":2794},[261],{"categories":2796},[],{"categories":2798},[261],{"categories":2800},[],{"categories":2802},[],{"categories":2804},[200],{"categories":2806},[],{"categories":2808},[194],{"categories":2810},[191],{"categories":2812},[245],{"categories":2814},[135],{"categories":2816},[],{"categories":2818},[],{"categories":2820},[197],{"categories":2822},[191],{"categories":2824},[261],{"categories":2826},[],{"categories":2828},[200],{"categories":2830},[200],{"categories":2832},[218],{"categories":2834},[135],{"categories":2836},[197],{"categories":2838},[200],{"categories":2840},[197],{"categories":2842},[200],{"categories":2844},[197],{"categories":2846},[203],{"categories":2848},[218],{"categories":2850},[],{"categories":2852},[261],{"categories":2854},[],{"categories":2856},[135],{"categories":2858},[200],{"categories":2860},[],{"categories":2862},[197],{"categories":2864},[200],{"categories":2866},[194],{"categories":2868},[191],{"categories":2870},[197],{"categories":2872},[245],{"categories":2874},[135],{"categories":2876},[135],{"categories":2878},[197],{"categories":2880},[248],{"categories":2882},[197],{"categories":2884},[200],{"categories":2886},[194],{"categories":2888},[245],{"categories":2890},[200],{"categories":2892},[197],{"categories":2894},[197],{"categories":2896},[200],{"categories":2898},[218],{"categories":2900},[],{"categories":2902},[191],{"categories":2904},[197],{"categories":2906},[200],{"categories":2908},[197],{"categories":2910},[197],{"categories":2912},[],{"categories":2914},[245],{"categories":2916},[194],{"categories":2918},[218],{"categories":2920},[197],{"categories":2922},[197],{"categories":2924},[245],{"categories":2926},[197],{"categories":2928},[261],{"categories":2930},[248],{"categories":2932},[197],{"categories":2934},[218],{"categories":2936},[197],{"categories":2938},[200],{"categories":2940},[286],{"categories":2942},[197],{"categories":2944},[200],{"categories":2946},[248],{"categories":2948},[],{"categories":2950},[200],{"categories":2952},[135],{"categories":2954},[245],{"categories":2956},[197],{"categories":2958},[191],{"categories":2960},[194],{"categories":2962},[135],{"categories":2964},[197],{"categories":2966},[],{"categories":2968},[200],{"categories":2970},[200],{"categories":2972},[197],{"categories":2974},[248],{"categories":2976},[],{"categories":2978},[218],{"categories":2980},[],{"categories":2982},[218],{"categories":2984},[197],{"categories":2986},[200],{"categories":2988},[200],{"categories":2990},[200],{"categories":2992},[],{"categories":2994},[218],{"categories":2996},[],{"categories":2998},[197],{"categories":3000},[197],{"categories":3002},[],{"categories":3004},[245],{"categories":3006},[200],{"categories":3008},[261],{"categories":3010},[191],{"categories":3012},[],{"categories":3014},[197],{"categories":3016},[],{"categories":3018},[191],{"categories":3020},[218],{"categories":3022},[135],{"categories":3024},[197],{"categories":3026},[197],{"categories":3028},[197],{"categories":3030},[135],{"categories":3032},[218],{"categories":3034},[245],{"categories":3036},[197],{"categories":3038},[197],{"categories":3040},[197],{"categories":3042},[218],{"categories":3044},[197],{"categories":3046},[218],{"categories":3048},[218],{"categories":3050},[200],{"categories":3052},[200],{"categories":3054},[135],{"categories":3056},[218],{"categories":3058},[200],{"categories":3060},[197],{"categories":3062},[135],{"categories":3064},[245],{"categories":3066},[],{"categories":3068},[200],{"categories":3070},[],{"categories":3072},[],{"categories":3074},[],{"categories":3076},[194],{"categories":3078},[197],{"categories":3080},[200],{"categories":3082},[191],{"categories":3084},[200],{"categories":3086},[261],{"categories":3088},[],{"categories":3090},[200],{"categories":3092},[],{"categories":3094},[191],{"categories":3096},[200],{"categories":3098},[],{"categories":3100},[200],{"categories":3102},[197],{"categories":3104},[218],{"categories":3106},[197],{"categories":3108},[200],{"categories":3110},[218],{"categories":3112},[200],{"categories":3114},[135],{"categories":3116},[245],{"categories":3118},[191],{"categories":3120},[],{"categories":3122},[200],{"categories":3124},[245],{"categories":3126},[286],{"categories":3128},[218],{"categories":3130},[197],{"categories":3132},[245],{"categories":3134},[191],{"categories":3136},[],{"categories":3138},[200],{"categories":3140},[197],{"categories":3142},[200],{"categories":3144},[197],{"categories":3146},[],{"categories":3148},[200],{"categories":3150},[203],{"categories":3152},[218],{"categories":3154},[200],{"categories":3156},[194],{"categories":3158},[],{"categories":3160},[197],{"categories":3162},[203],{"categories":3164},[197],{"categories":3166},[200],{"categories":3168},[218],{"categories":3170},[191],{"categories":3172},[286],{"categories":3174},[197],{"categories":3176},[197],{"categories":3178},[197],{"categories":3180},[218],{"categories":3182},[194],{"categories":3184},[197],{"categories":3186},[245],{"categories":3188},[218],{"categories":3190},[286],{"categories":3192},[197],{"categories":3194},[],{"categories":3196},[],{"categories":3198},[197],{"categories":3200},[286],{"categories":3202},[248],{"categories":3204},[200],{"categories":3206},[200],{"categories":3208},[218],{"categories":3210},[197],{"categories":3212},[191],{"categories":3214},[245],{"categories":3216},[200],{"categories":3218},[197],{"categories":3220},[261],{"categories":3222},[197],{"categories":3224},[200],{"categories":3226},[],{"categories":3228},[197],{"categories":3230},[197],{"categories":3232},[218],{"categories":3234},[191],{"categories":3236},[],{"categories":3238},[197],{"categories":3240},[197],{"categories":3242},[135],{"categories":3244},[245],{"categories":3246},[197,200],{"categories":3248},[261,194],{"categories":3250},[197],{"categories":3252},[],{"categories":3254},[200],{"categories":3256},[],{"categories":3258},[135],{"categories":3260},[197],{"categories":3262},[],{"categories":3264},[197],{"categories":3266},[218],{"categories":3268},[],{"categories":3270},[200],{"categories":3272},[197],{"categories":3274},[],{"categories":3276},[245],{"categories":3278},[200],{"categories":3280},[197],{"categories":3282},[191],{"categories":3284},[200],{"categories":3286},[197],{"categories":3288},[],{"categories":3290},[286],{"categories":3292},[261],{"categories":3294},[194],{"categories":3296},[194],{"categories":3298},[191],{"categories":3300},[191],{"categories":3302},[197],{"categories":3304},[200],{"categories":3306},[197],{"categories":3308},[197],{"categories":3310},[191],{"categories":3312},[197],{"categories":3314},[261],{"categories":3316},[218],{"categories":3318},[197],{"categories":3320},[200],{"categories":3322},[197],{"categories":3324},[],{"categories":3326},[135],{"categories":3328},[],{"categories":3330},[135],{"categories":3332},[200],{"categories":3334},[191],{"categories":3336},[],{"categories":3338},[286],{"categories":3340},[197],{"categories":3342},[],{"categories":3344},[218],{"categories":3346},[200],{"categories":3348},[135],{"categories":3350},[197],{"categories":3352},[200],{"categories":3354},[135],{"categories":3356},[200],{"categories":3358},[218],{"categories":3360},[191],{"categories":3362},[218],{"categories":3364},[135],{"categories":3366},[197],{"categories":3368},[245],{"categories":3370},[197],{"categories":3372},[197],{"categories":3374},[197],{"categories":3376},[197],{"categories":3378},[197],{"categories":3380},[200],{"categories":3382},[197],{"categories":3384},[200],{"categories":3386},[197],{"categories":3388},[191],{"categories":3390},[197],{"categories":3392},[200],{"categories":3394},[245],{"categories":3396},[191],{"categories":3398},[200],{"categories":3400},[245],{"categories":3402},[],{"categories":3404},[197],{"categories":3406},[197],{"categories":3408},[135],{"categories":3410},[],{"categories":3412},[200],{"categories":3414},[261],{"categories":3416},[197],{"categories":3418},[218],{"categories":3420},[261],{"categories":3422},[200],{"categories":3424},[194],{"categories":3426},[194],{"categories":3428},[197],{"categories":3430},[191],{"categories":3432},[],{"categories":3434},[200],{"categories":3436},[197],{"categories":3438},[],{"categories":3440},[191],{"categories":3442},[197],{"categories":3444},[200],{"categories":3446},[200],{"categories":3448},[],{"categories":3450},[135],{"categories":3452},[135],{"categories":3454},[261],{"categories":3456},[245],{"categories":3458},[],{"categories":3460},[197],{"categories":3462},[200],{"categories":3464},[191],{"categories":3466},[197],{"categories":3468},[135],{"categories":3470},[191],{"categories":3472},[218],{"categories":3474},[218],{"categories":3476},[],{"categories":3478},[218],{"categories":3480},[200],{"categories":3482},[245],{"categories":3484},[248],{"categories":3486},[197],{"categories":3488},[],{"categories":3490},[218],{"categories":3492},[135],{"categories":3494},[194],{"categories":3496},[197],{"categories":3498},[191],{"categories":3500},[286],{"categories":3502},[191],{"categories":3504},[],{"categories":3506},[],{"categories":3508},[218],{"categories":3510},[],{"categories":3512},[200],{"categories":3514},[200],{"categories":3516},[200],{"categories":3518},[],{"categories":3520},[197],{"categories":3522},[],{"categories":3524},[218],{"categories":3526},[191],{"categories":3528},[245],{"categories":3530},[197],{"categories":3532},[218],{"categories":3534},[218],{"categories":3536},[],{"categories":3538},[218],{"categories":3540},[191],{"categories":3542},[197],{"categories":3544},[],{"categories":3546},[200],{"categories":3548},[200],{"categories":3550},[191],{"categories":3552},[],{"categories":3554},[],{"categories":3556},[],{"categories":3558},[245],{"categories":3560},[200],{"categories":3562},[197],{"categories":3564},[],{"categories":3566},[],{"categories":3568},[],{"categories":3570},[245],{"categories":3572},[],{"categories":3574},[197],{"categories":3576},[191],{"categories":3578},[],{"categories":3580},[],{"categories":3582},[245],{"categories":3584},[197],{"categories":3586},[218],{"categories":3588},[],{"categories":3590},[261],{"categories":3592},[218],{"categories":3594},[261],{"categories":3596},[197],{"categories":3598},[],{"categories":3600},[],{"categories":3602},[200],{"categories":3604},[],{"categories":3606},[],{"categories":3608},[200],{"categories":3610},[197],{"categories":3612},[],{"categories":3614},[200],{"categories":3616},[218],{"categories":3618},[197],{"categories":3620},[261],{"categories":3622},[248],{"categories":3624},[200],{"categories":3626},[200],{"categories":3628},[],{"categories":3630},[],{"categories":3632},[],{"categories":3634},[218],{"categories":3636},[],{"categories":3638},[],{"categories":3640},[245],{"categories":3642},[191],{"categories":3644},[],{"categories":3646},[194],{"categories":3648},[261],{"categories":3650},[197],{"categories":3652},[135],{"categories":3654},[191],{"categories":3656},[248],{"categories":3658},[194],{"categories":3660},[135],{"categories":3662},[135],{"categories":3664},[],{"categories":3666},[],{"categories":3668},[200],{"categories":3670},[191],{"categories":3672},[245],{"categories":3674},[191],{"categories":3676},[200],{"categories":3678},[286],{"categories":3680},[197],{"categories":3682},[191],{"categories":3684},[200],{"categories":3686},[],{"categories":3688},[197],{"categories":3690},[218],{"categories":3692},[135],{"categories":3694},[],{"categories":3696},[245],{"categories":3698},[218],{"categories":3700},[191],{"categories":3702},[200],{"categories":3704},[197],{"categories":3706},[194],{"categories":3708},[200,286],{"categories":3710},[200],{"categories":3712},[135],{"categories":3714},[197],{"categories":3716},[197],{"categories":3718},[248],{"categories":3720},[261],{"categories":3722},[200],{"categories":3724},[],{"categories":3726},[200],{"categories":3728},[197],{"categories":3730},[194],{"categories":3732},[],{"categories":3734},[],{"categories":3736},[197],{"categories":3738},[248],{"categories":3740},[197],{"categories":3742},[],{"categories":3744},[218],{"categories":3746},[],{"categories":3748},[218],{"categories":3750},[191],{"categories":3752},[135],{"categories":3754},[197],{"categories":3756},[200],{"categories":3758},[197],{"categories":3760},[197],{"categories":3762},[261],{"categories":3764},[135],{"categories":3766},[],{"categories":3768},[218],{"categories":3770},[197],{"categories":3772},[],{"categories":3774},[197],{"categories":3776},[200],{"categories":3778},[197],{"categories":3780},[200],{"categories":3782},[197],{"categories":3784},[197],{"categories":3786},[197],{"categories":3788},[197],{"categories":3790},[194],{"categories":3792},[],{"categories":3794},[203],{"categories":3796},[218],{"categories":3798},[197],{"categories":3800},[],{"categories":3802},[135],{"categories":3804},[197],{"categories":3806},[197],{"categories":3808},[197],{"categories":3810},[200],{"categories":3812},[218],{"categories":3814},[197],{"categories":3816},[197],{"categories":3818},[197],{"categories":3820},[194],{"categories":3822},[200],{"categories":3824},[245],{"categories":3826},[],{"categories":3828},[248],{"categories":3830},[197],{"categories":3832},[],{"categories":3834},[218],{"categories":3836},[261],{"categories":3838},[],{"categories":3840},[],{"categories":3842},[218],{"categories":3844},[218],{"categories":3846},[261],{"categories":3848},[191],{"categories":3850},[200],{"categories":3852},[200],{"categories":3854},[197],{"categories":3856},[194],{"categories":3858},[],{"categories":3860},[],{"categories":3862},[218],{"categories":3864},[248],{"categories":3866},[135],{"categories":3868},[200],{"categories":3870},[245],{"categories":3872},[248],{"categories":3874},[248],{"categories":3876},[],{"categories":3878},[218],{"categories":3880},[197],{"categories":3882},[197],{"categories":3884},[135],{"categories":3886},[],{"categories":3888},[218],{"categories":3890},[218],{"categories":3892},[218],{"categories":3894},[],{"categories":3896},[200],{"categories":3898},[197],{"categories":3900},[],{"categories":3902},[191],{"categories":3904},[194],{"categories":3906},[],{"categories":3908},[197],{"categories":3910},[197],{"categories":3912},[],{"categories":3914},[135],{"categories":3916},[],{"categories":3918},[],{"categories":3920},[],{"categories":3922},[],{"categories":3924},[197],{"categories":3926},[218],{"categories":3928},[],{"categories":3930},[],{"categories":3932},[197],{"categories":3934},[197],{"categories":3936},[197],{"categories":3938},[248],{"categories":3940},[197],{"categories":3942},[248],{"categories":3944},[],{"categories":3946},[248],{"categories":3948},[248],{"categories":3950},[286],{"categories":3952},[200],{"categories":3954},[135],{"categories":3956},[],{"categories":3958},[],{"categories":3960},[248],{"categories":3962},[135],{"categories":3964},[135],{"categories":3966},[135],{"categories":3968},[],{"categories":3970},[191],{"categories":3972},[135],{"categories":3974},[135],{"categories":3976},[191],{"categories":3978},[135],{"categories":3980},[194],{"categories":3982},[135],{"categories":3984},[135],{"categories":3986},[135],{"categories":3988},[248],{"categories":3990},[218],{"categories":3992},[218],{"categories":3994},[197],{"categories":3996},[135],{"categories":3998},[248],{"categories":4000},[286],{"categories":4002},[248],{"categories":4004},[248],{"categories":4006},[248],{"categories":4008},[],{"categories":4010},[194],{"categories":4012},[],{"categories":4014},[286],{"categories":4016},[135],{"categories":4018},[135],{"categories":4020},[135],{"categories":4022},[200],{"categories":4024},[218,194],{"categories":4026},[248],{"categories":4028},[],{"categories":4030},[],{"categories":4032},[248],{"categories":4034},[],{"categories":4036},[248],{"categories":4038},[218],{"categories":4040},[200],{"categories":4042},[],{"categories":4044},[135],{"categories":4046},[197],{"categories":4048},[245],{"categories":4050},[],{"categories":4052},[197],{"categories":4054},[],{"categories":4056},[218],{"categories":4058},[191],{"categories":4060},[248],{"categories":4062},[],{"categories":4064},[135],{"categories":4066},[218],[4068,4218,4719,4773],{"id":4069,"title":4070,"ai":4071,"body":4077,"categories":4205,"created_at":136,"date_modified":136,"description":128,"extension":137,"faq":136,"featured":138,"kicker_label":136,"meta":4206,"navigation":169,"path":4207,"published_at":4208,"question":136,"scraped_at":136,"seo":4209,"sitemap":4210,"source_id":4211,"source_name":176,"source_type":177,"source_url":4212,"stem":4213,"tags":4214,"thumbnail_url":136,"tldr":4215,"tweet":136,"unknown_tags":4216,"__hash__":4217},"summaries\u002Fsummaries\u002Fsecure-ai-coded-apps-with-7-quick-security-checks-summary.md","Secure AI-Coded Apps with 7 Quick Security Checks",{"provider":7,"model":4072,"input_tokens":4073,"output_tokens":4074,"processing_time_ms":4075,"cost_usd":4076},"x-ai\u002Fgrok-4.1-fast",7747,1708,14633,0.0023809,{"type":14,"value":4078,"toc":4200},[4079,4083,4091,4095,4098,4112,4126,4143,4152,4164,4174,4183,4186,4190,4197],[17,4080,4082],{"id":4081},"ai-optimizes-for-function-not-securityprompt-it-explicitly","AI Optimizes for Function, Not Security—Prompt It Explicitly",[22,4084,4085,4086,4090],{},"AI tools like Claude produce fully functional code riddled with exploits because they prioritize your stated functional goal (e.g., \"build a login page\") over unmentioned security. A derivai experiment showed the same prompt yielding 3 major vulns (no session management, auth checks, stored XSS) without a security system prompt, but zero with one. Stanford research (Perry et al.) found AI-assisted developers wrote ",[4087,4088,4089],"em",{},"more"," vulnerabilities than manual coders, with higher confidence in their insecure code. Backslash Security tests revealed even top models like Claude 3.7 Sonnet generated vulns 40% of the time, GPT-4o 72%. Real-world fallout: Moltbook AI-built social network exposed 1.5M API tokens and 35K emails in 3 days. Fix by making security explicit: use prompts like \"Act as a senior security engineer... check OWASP Top 10\" post-feature, rating findings critical\u002Fhigh\u002Fmedium\u002Flow with code fixes.",[17,4092,4094],{"id":4093},"_7-manual-checks-catch-owasp-top-10-in-30-minutes","7 Manual Checks Catch OWASP Top 10 in 30 Minutes",[22,4096,4097],{},"Each 2-5 minute test uncovers common vibe-coding pitfalls; run them pre-deploy to block exploits like those in JS-Blanket (prototype pollution, DoS recursion, regex bypasses, code execution via toJSON, mutable exports).",[22,4099,4100,4103,4104,4107,4108,4111],{},[59,4101,4102],{},"Exposed Secrets:"," ",[26,4105,4106],{},"grep -rn \"api_key|secret_key|database_url\" --include=\"*.js\" --include=\"*.ts\" --include=\"*.py\" ."," and ",[26,4109,4110],{},"git log -p --all -S 'sk-'",". Bad: literal strings like \"sk-abc123\". Fix: Prompt AI to use env vars, add startup checks, .gitignore .env. Block upfront with awesome-claude-hooks PreToolUse script.",[22,4113,4114,4117,4118,4121,4122,4125],{},[59,4115,4116],{},"Auth Bypass:"," Incognito access to \u002Fdashboard; ",[26,4119,4120],{},"curl -i https:\u002F\u002Fyourapp.com\u002Fapi\u002Fusers\u002Fme"," or ",[26,4123,4124],{},"\u002Fapi\u002Fusers\u002F2"," with session. Bad: 200 OK sans auth or other-user data. Fix: Server-side middleware for 401\u002F403.",[22,4127,4128,4131,4132,4135,4136,4135,4139,4142],{},[59,4129,4130],{},"Input Injection:"," Paste ",[26,4133,4134],{},"\u003Cscript>alert(1)\u003C\u002Fscript>",", ",[26,4137,4138],{},"'; DROP TABLE users; --",[26,4140,4141],{},"{{7*7}}"," into fields. Bad: JS alerts (XSS), SQL behavior changes (injection), rendered math (template inj). Fix: Server sanitize, parameterized queries, HTML-encode.",[22,4144,4145,4103,4148,4151],{},[59,4146,4147],{},"Error Leakage:",[26,4149,4150],{},"curl -i https:\u002F\u002Fyourapp.com\u002Fapi\u002Fusers\u002F99999999",", malformed JSON, wrong method. Bad: Stack traces, DB names, paths. Fix: Generic prod errors, log server-side, NODE_ENV=production.",[22,4153,4154,4103,4157,4121,4160,4163],{},[59,4155,4156],{},"Dependency Vulns:",[26,4158,4159],{},"npm audit",[26,4161,4162],{},"pip audit",". Bad: High\u002Fcritical like lodash \u003C4.17.21 prototype pollution. Fix: Update or patch.",[22,4165,4166,4169,4170,4173],{},[59,4167,4168],{},"HTTPS\u002FHeaders:"," Load http:\u002F\u002F, ",[26,4171,4172],{},"curl -sI https:\u002F\u002Fyourapp.com",", securityheaders.com. Bad: No redirect, missing HSTS\u002FCSP\u002FX-Content-Type-Options\u002FX-Frame-Options (D\u002FF grade). Fix: Redirect middleware, add headers.",[22,4175,4176,4103,4179,4182],{},[59,4177,4178],{},"Exposed Routes:",[26,4180,4181],{},"curl -i"," \u002Fadmin, \u002Fdebug, \u002Fswagger, \u002F.env. Bad: Non-404 responses, docs, env dumps. Fix: Auth docs, 404 unknown routes, block sensitive files.",[22,4184,4185],{},"These map to 6 OWASP Top 10 categories most exploited in AI code, turning open doors into locked ones.",[17,4187,4189],{"id":4188},"automate-and-enforce-security-in-workflows","Automate and Enforce Security in Workflows",[22,4191,4192,4193,4196],{},"Post-feature, paste the OWASP prompt into AI for findings with fixes. For consistency, use agent-workflow-kit's Sentinel subagent (",[26,4194,4195],{},"@\"SENTINEL (agent)\" review","): threat-models assets, data flows, STRIDE analysis, OWASP remediations. Enforce by default via OpenSSF rules file (.cursorrules\u002FCLAUDE.md) baking security into every generation.",[22,4198,4199],{},"Immediate actions: Run checks\u002Fscript now, CI npm\u002Fpip audit, prompt-review per feature (+10 min), fix criticals (secrets\u002Fauth) first. JS-Blanket fixes (null-protos, depth limits, frozen exports, CI audit) prove even seniors miss AI-blind spots—check before others exploit.",{"title":128,"searchDepth":129,"depth":129,"links":4201},[4202,4203,4204],{"id":4081,"depth":129,"text":4082},{"id":4093,"depth":129,"text":4094},{"id":4188,"depth":129,"text":4189},[135],{},"\u002Fsummaries\u002Fsecure-ai-coded-apps-with-7-quick-security-checks-summary","2026-04-08 21:21:18",{"title":4070,"description":128},{"loc":4207},"c67c83a6dee0e3cb","https:\u002F\u002Funknown","summaries\u002Fsecure-ai-coded-apps-with-7-quick-security-checks-summary",[181,182,184,183],"AI coding tools generate vulnerable code 40-72% of the time unless prompted for security; run this 30-minute 7-check checklist mapping to OWASP Top 10 to catch issues like exposed secrets and auth bypasses before deploy.",[184,183],"RHUVUt8-hK0aZ13KsWhjaZp1fGerXA4Ps7Kyla_5KC8",{"id":4219,"title":4220,"ai":4221,"body":4226,"categories":4701,"created_at":136,"date_modified":136,"description":128,"extension":137,"faq":136,"featured":138,"kicker_label":136,"meta":4702,"navigation":169,"path":4707,"published_at":4708,"question":136,"scraped_at":4709,"seo":4710,"sitemap":4711,"source_id":4712,"source_name":176,"source_type":177,"source_url":4713,"stem":4714,"tags":4715,"thumbnail_url":136,"tldr":4716,"tweet":136,"unknown_tags":4717,"__hash__":4718},"summaries\u002Fsummaries\u002F8d5558e87957c77a-scale-compose-nav-with-nested-graphs-and-state-lay-summary.md","Scale Compose Nav with Nested Graphs and State Layers",{"provider":7,"model":4072,"input_tokens":4222,"output_tokens":4223,"processing_time_ms":4224,"cost_usd":4225},6768,1765,14725,0.00221345,{"type":14,"value":4227,"toc":4695},[4228,4232,4235,4238,4311,4314,4390,4393,4396,4429,4433,4436,4439,4461,4490,4502,4505,4509,4516,4572,4575,4604,4607,4611,4634,4673,4691],[17,4229,4231],{"id":4230},"nested-graphs-isolate-features-and-simplify-reasoning","Nested Graphs Isolate Features and Simplify Reasoning",[22,4233,4234],{},"Flat NavHosts with dozens of composables become unmaintainable—files bloat, flows interfere, back stacks confuse, and refactors risk breakage. Instead, centralize ownership in one root NavHost that only defines major app flows (e.g., auth, main), then nest separate graphs per feature.",[22,4236,4237],{},"Root setup:",[4239,4240,4244],"pre",{"className":4241,"code":4242,"language":4243,"meta":128,"style":128},"language-kotlin shiki shiki-themes github-light github-dark","@Composable\nfun AppNavHost(navController: NavHostController) {\n    NavHost(\n        navController = navController,\n        startDestination = Graph.AUTH,\n        route = Graph.ROOT\n    ) {\n        authNavGraph(navController)\n        mainNavGraph(navController)\n    }\n}\n","kotlin",[26,4245,4246,4254,4259,4265,4270,4275,4281,4287,4293,4299,4305],{"__ignoreMap":128},[4247,4248,4251],"span",{"class":4249,"line":4250},"line",1,[4247,4252,4253],{},"@Composable\n",[4247,4255,4256],{"class":4249,"line":129},[4247,4257,4258],{},"fun AppNavHost(navController: NavHostController) {\n",[4247,4260,4262],{"class":4249,"line":4261},3,[4247,4263,4264],{},"    NavHost(\n",[4247,4266,4267],{"class":4249,"line":166},[4247,4268,4269],{},"        navController = navController,\n",[4247,4271,4272],{"class":4249,"line":165},[4247,4273,4274],{},"        startDestination = Graph.AUTH,\n",[4247,4276,4278],{"class":4249,"line":4277},6,[4247,4279,4280],{},"        route = Graph.ROOT\n",[4247,4282,4284],{"class":4249,"line":4283},7,[4247,4285,4286],{},"    ) {\n",[4247,4288,4290],{"class":4249,"line":4289},8,[4247,4291,4292],{},"        authNavGraph(navController)\n",[4247,4294,4296],{"class":4249,"line":4295},9,[4247,4297,4298],{},"        mainNavGraph(navController)\n",[4247,4300,4302],{"class":4249,"line":4301},10,[4247,4303,4304],{},"    }\n",[4247,4306,4308],{"class":4249,"line":4307},11,[4247,4309,4310],{},"}\n",[22,4312,4313],{},"Feature graphs group related screens:",[4239,4315,4317],{"className":4241,"code":4316,"language":4243,"meta":128,"style":128},"fun NavGraphBuilder.authNavGraph(navController: NavHostController) {\n    navigation(startDestination = \"login\", route = Graph.AUTH) {\n        composable(\"login\") {\n            LoginScreen(\n                onLoginSuccess = {\n                    navController.navigate(Graph.MAIN) {\n                        popUpTo(Graph.AUTH) { inclusive = true }\n                    }\n                }\n            )\n        }\n        \u002F\u002F signup composable...\n    }\n}\n",[26,4318,4319,4324,4329,4334,4339,4344,4349,4354,4359,4364,4369,4374,4380,4385],{"__ignoreMap":128},[4247,4320,4321],{"class":4249,"line":4250},[4247,4322,4323],{},"fun NavGraphBuilder.authNavGraph(navController: NavHostController) {\n",[4247,4325,4326],{"class":4249,"line":129},[4247,4327,4328],{},"    navigation(startDestination = \"login\", route = Graph.AUTH) {\n",[4247,4330,4331],{"class":4249,"line":4261},[4247,4332,4333],{},"        composable(\"login\") {\n",[4247,4335,4336],{"class":4249,"line":166},[4247,4337,4338],{},"            LoginScreen(\n",[4247,4340,4341],{"class":4249,"line":165},[4247,4342,4343],{},"                onLoginSuccess = {\n",[4247,4345,4346],{"class":4249,"line":4277},[4247,4347,4348],{},"                    navController.navigate(Graph.MAIN) {\n",[4247,4350,4351],{"class":4249,"line":4283},[4247,4352,4353],{},"                        popUpTo(Graph.AUTH) { inclusive = true }\n",[4247,4355,4356],{"class":4249,"line":4289},[4247,4357,4358],{},"                    }\n",[4247,4360,4361],{"class":4249,"line":4295},[4247,4362,4363],{},"                }\n",[4247,4365,4366],{"class":4249,"line":4301},[4247,4367,4368],{},"            )\n",[4247,4370,4371],{"class":4249,"line":4307},[4247,4372,4373],{},"        }\n",[4247,4375,4377],{"class":4249,"line":4376},12,[4247,4378,4379],{},"        \u002F\u002F signup composable...\n",[4247,4381,4383],{"class":4249,"line":4382},13,[4247,4384,4304],{},[4247,4386,4388],{"class":4249,"line":4387},14,[4247,4389,4310],{},[22,4391,4392],{},"This keeps graphs small, prevents cross-flow pollution, and makes back stack behavior predictable—e.g., clear auth stack on login success.",[22,4394,4395],{},"Centralize routes with sealed classes to avoid string typos:",[4239,4397,4399],{"className":4241,"code":4398,"language":4243,"meta":128,"style":128},"sealed class AppScreen(val route: String) {\n    data object Home : AppScreen(\"home\")\n    data object UserDetails : AppScreen(\"user\u002F{userId}\") {\n        fun createRoute(userId: Long) = \"user\u002F$userId\"\n    }\n}\n",[26,4400,4401,4406,4411,4416,4421,4425],{"__ignoreMap":128},[4247,4402,4403],{"class":4249,"line":4250},[4247,4404,4405],{},"sealed class AppScreen(val route: String) {\n",[4247,4407,4408],{"class":4249,"line":129},[4247,4409,4410],{},"    data object Home : AppScreen(\"home\")\n",[4247,4412,4413],{"class":4249,"line":4261},[4247,4414,4415],{},"    data object UserDetails : AppScreen(\"user\u002F{userId}\") {\n",[4247,4417,4418],{"class":4249,"line":166},[4247,4419,4420],{},"        fun createRoute(userId: Long) = \"user\u002F$userId\"\n",[4247,4422,4423],{"class":4249,"line":165},[4247,4424,4304],{},[4247,4426,4427],{"class":4249,"line":4277},[4247,4428,4310],{},[17,4430,4432],{"id":4431},"layered-state-keeps-navigation-stable","Layered State Keeps Navigation Stable",[22,4434,4435],{},"Navigation only handles movement and small primitives (IDs, filters, flags)—never full objects, which fail serialization and stale quickly. Load data in destinations.",[22,4437,4438],{},"Three layers:",[53,4440,4441,4451],{},[56,4442,4443,4446,4447,4450],{},[59,4444,4445],{},"Nav args",": Primitives only, e.g., ",[26,4448,4449],{},"navController.navigate(UserDetails.createRoute(42L))",".",[56,4452,4453,4456,4457,4460],{},[59,4454,4455],{},"ViewModels",": Screen\u002Fbusiness state with API calls, loading\u002Ferrors. Extract args via ",[26,4458,4459],{},"SavedStateHandle",":",[4239,4462,4464],{"className":4241,"code":4463,"language":4243,"meta":128,"style":128},"class UserDetailsViewModel(savedStateHandle: SavedStateHandle) : ViewModel() {\n    private val userId: Long = checkNotNull(savedStateHandle[\"userId\"])\n    val uiState = MutableStateFlow(UserDetailsUiState())\n    \u002F\u002F Load data in init...\n}\n",[26,4465,4466,4471,4476,4481,4486],{"__ignoreMap":128},[4247,4467,4468],{"class":4249,"line":4250},[4247,4469,4470],{},"class UserDetailsViewModel(savedStateHandle: SavedStateHandle) : ViewModel() {\n",[4247,4472,4473],{"class":4249,"line":129},[4247,4474,4475],{},"    private val userId: Long = checkNotNull(savedStateHandle[\"userId\"])\n",[4247,4477,4478],{"class":4249,"line":4261},[4247,4479,4480],{},"    val uiState = MutableStateFlow(UserDetailsUiState())\n",[4247,4482,4483],{"class":4249,"line":166},[4247,4484,4485],{},"    \u002F\u002F Load data in init...\n",[4247,4487,4488],{"class":4249,"line":165},[4247,4489,4310],{},[53,4491,4492],{"start":4261},[56,4493,4494,4497,4498,4501],{},[59,4495,4496],{},"Composable state",": UI-only like ",[26,4499,4500],{},"rememberSaveable { mutableStateOf(\"\") }"," for inputs\u002Ftoggles.",[22,4503,4504],{},"This separation makes nav robust: pass ID, fetch fresh data, avoid fragile deep passing.",[17,4506,4508],{"id":4507},"route-level-wiring-and-tab-polish","Route-Level Wiring and Tab Polish",[22,4510,4511,4512,4515],{},"Avoid scattering ",[26,4513,4514],{},"NavController"," in leaf UI—pass lambdas from route composables for reusable, testable screens:",[4239,4517,4519],{"className":4241,"code":4518,"language":4243,"meta":128,"style":128},"@Composable\nfun HomeRoute(navController: NavHostController) {\n    HomeScreen(\n        onOpenSettings = { navController.navigate(\"settings\") },\n        onOpenUser = { id -> navController.navigate(\"user\u002F$id\") }\n    )\n}\n@Composable\nfun HomeScreen(onOpenSettings: () -> Unit, onOpenUser: (Long) -> Unit) {\n    \u002F\u002F Buttons call lambdas\n}\n",[26,4520,4521,4525,4530,4535,4540,4545,4550,4554,4558,4563,4568],{"__ignoreMap":128},[4247,4522,4523],{"class":4249,"line":4250},[4247,4524,4253],{},[4247,4526,4527],{"class":4249,"line":129},[4247,4528,4529],{},"fun HomeRoute(navController: NavHostController) {\n",[4247,4531,4532],{"class":4249,"line":4261},[4247,4533,4534],{},"    HomeScreen(\n",[4247,4536,4537],{"class":4249,"line":166},[4247,4538,4539],{},"        onOpenSettings = { navController.navigate(\"settings\") },\n",[4247,4541,4542],{"class":4249,"line":165},[4247,4543,4544],{},"        onOpenUser = { id -> navController.navigate(\"user\u002F$id\") }\n",[4247,4546,4547],{"class":4249,"line":4277},[4247,4548,4549],{},"    )\n",[4247,4551,4552],{"class":4249,"line":4283},[4247,4553,4310],{},[4247,4555,4556],{"class":4249,"line":4289},[4247,4557,4253],{},[4247,4559,4560],{"class":4249,"line":4295},[4247,4561,4562],{},"fun HomeScreen(onOpenSettings: () -> Unit, onOpenUser: (Long) -> Unit) {\n",[4247,4564,4565],{"class":4249,"line":4301},[4247,4566,4567],{},"    \u002F\u002F Buttons call lambdas\n",[4247,4569,4570],{"class":4249,"line":4307},[4247,4571,4310],{},[22,4573,4574],{},"For bottom tabs, use this nav spec to avoid duplicates, save\u002Frestore state:",[4239,4576,4578],{"className":4241,"code":4577,"language":4243,"meta":128,"style":128},"navController.navigate(route) {\n    popUpTo(navController.graph.startDestinationId) { saveState = true }\n    launchSingleTop = true\n    restoreState = true\n}\n",[26,4579,4580,4585,4590,4595,4600],{"__ignoreMap":128},[4247,4581,4582],{"class":4249,"line":4250},[4247,4583,4584],{},"navController.navigate(route) {\n",[4247,4586,4587],{"class":4249,"line":129},[4247,4588,4589],{},"    popUpTo(navController.graph.startDestinationId) { saveState = true }\n",[4247,4591,4592],{"class":4249,"line":4261},[4247,4593,4594],{},"    launchSingleTop = true\n",[4247,4596,4597],{"class":4249,"line":166},[4247,4598,4599],{},"    restoreState = true\n",[4247,4601,4602],{"class":4249,"line":165},[4247,4603,4310],{},[22,4605,4606],{},"This preserves tab state across switches, polishing UX.",[17,4608,4610],{"id":4609},"full-stack-ties-it-together","Full Stack Ties It Together",[22,4612,4613,4614,4617,4618,4621,4622,4625,4626,4629,4630,4633],{},"Thin ",[26,4615,4616],{},"MainActivity"," sets ",[26,4619,4620],{},"App()"," with ",[26,4623,4624],{},"rememberNavController()",". ",[26,4627,4628],{},"AppNavHost"," wires root. Graphs use route sealed interfaces (e.g., ",[26,4631,4632],{},"AuthDest.Login.route","). UserDetails handles args:",[4239,4635,4637],{"className":4241,"code":4636,"language":4243,"meta":128,"style":128},"composable(\n    route = MainDest.UserDetails.route,\n    arguments = listOf(navArgument(MainDest.UserDetails.ARG) { type = NavType.LongType })\n) { entry ->\n    val userId = entry.arguments?.getLong(MainDest.UserDetails.ARG) ?: return@composable\n    UserDetailsRoute(userId)\n}\n",[26,4638,4639,4644,4649,4654,4659,4664,4669],{"__ignoreMap":128},[4247,4640,4641],{"class":4249,"line":4250},[4247,4642,4643],{},"composable(\n",[4247,4645,4646],{"class":4249,"line":129},[4247,4647,4648],{},"    route = MainDest.UserDetails.route,\n",[4247,4650,4651],{"class":4249,"line":4261},[4247,4652,4653],{},"    arguments = listOf(navArgument(MainDest.UserDetails.ARG) { type = NavType.LongType })\n",[4247,4655,4656],{"class":4249,"line":166},[4247,4657,4658],{},") { entry ->\n",[4247,4660,4661],{"class":4249,"line":165},[4247,4662,4663],{},"    val userId = entry.arguments?.getLong(MainDest.UserDetails.ARG) ?: return@composable\n",[4247,4665,4666],{"class":4249,"line":4277},[4247,4667,4668],{},"    UserDetailsRoute(userId)\n",[4247,4670,4671],{"class":4249,"line":4283},[4247,4672,4310],{},[22,4674,4675,4678,4679,4682,4683,4686,4687,4690],{},[26,4676,4677],{},"UserDetailsRoute"," injects ",[26,4680,4681],{},"viewModel()",", collects ",[26,4684,4685],{},"uiState",", passes to pure ",[26,4688,4689],{},"UserDetailsScreen",". Add screens freely without central chaos.",[4692,4693,4694],"style",{},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":128,"searchDepth":129,"depth":129,"links":4696},[4697,4698,4699,4700],{"id":4230,"depth":129,"text":4231},{"id":4431,"depth":129,"text":4432},{"id":4507,"depth":129,"text":4508},{"id":4609,"depth":129,"text":4610},[135],{"content_references":4703,"triage":4704},[],{"relevance":166,"novelty":4261,"quality":166,"actionability":166,"composite":4705,"reasoning":4706},3.8,"Category: Software Engineering. The article provides a practical approach to scaling navigation in Jetpack Compose, addressing a common pain point for developers managing complex app architectures. It includes specific code examples and a structured method for implementing nested graphs and layered state, making it actionable for developers looking to improve their navigation systems.","\u002Fsummaries\u002F8d5558e87957c77a-scale-compose-nav-with-nested-graphs-and-state-lay-summary","2026-05-01 20:30:17","2026-05-03 17:00:35",{"title":4220,"description":128},{"loc":4707},"8d5558e87957c77a","https:\u002F\u002Flevelup.gitconnected.com\u002Fscaling-navigation-in-jetpack-compose-from-simple-apps-to-real-world-architecture-c6cf897f5a58?source=rss----5517fd7b58a6---4","summaries\u002F8d5558e87957c77a-scale-compose-nav-with-nested-graphs-and-state-lay-summary",[182,184,183],"For apps with 20-50 screens, use one root NavHost with nested feature graphs, centralized route objects, and layered state (nav args for IDs, ViewModels for data, composables for UI) to prevent navigation fragility.",[184,183],"MdJCmrlysKnhasneoBQPUQQjKPDk05jtmg82txx-jf4",{"id":4720,"title":4721,"ai":4722,"body":4727,"categories":4755,"created_at":136,"date_modified":136,"description":128,"extension":137,"faq":136,"featured":138,"kicker_label":136,"meta":4756,"navigation":169,"path":4761,"published_at":4762,"question":136,"scraped_at":4763,"seo":4764,"sitemap":4765,"source_id":4766,"source_name":176,"source_type":177,"source_url":4767,"stem":4768,"tags":4769,"thumbnail_url":136,"tldr":4770,"tweet":136,"unknown_tags":4771,"__hash__":4772},"summaries\u002Fsummaries\u002F0655ba472b96a06c-specs-not-code-are-the-real-bottleneck-summary.md","Specs, Not Code, Are the Real Bottleneck",{"provider":7,"model":4072,"input_tokens":4723,"output_tokens":4724,"processing_time_ms":4725,"cost_usd":4726},3895,961,7229,0.00075265,{"type":14,"value":4728,"toc":4750},[4729,4733,4736,4740,4743,4747],[17,4730,4732],{"id":4731},"ai-shifts-code-from-scarce-resource-to-commodity","AI Shifts Code from Scarce Resource to Commodity",[22,4734,4735],{},"Historically, software development bottlenecks stemmed from code's high cost: every line demanded manual effort, memory recall, and precision. AI-assisted tools now generate entire functions, modules, or architectures in seconds, making code production scalable and nearly free. This removes the old constraint, yet systems fail to improve proportionally—bugs endure, vulnerabilities rise, and complexity grows harder to manage. The widening gap between code output and confident understanding proves code was never the core limit.",[17,4737,4739],{"id":4738},"precise-specification-defines-success","Precise Specification Defines Success",[22,4741,4742],{},"The fundamental challenge is specifying exactly what code must achieve. Without clear, precise requirements upfront, even perfect code misses the mark. This insight reframes decades of practices: development isn't bottlenecked by implementation but by upfront knowledge of desired behavior. AI amplifies this by flooding teams with code volume they can't fully comprehend or verify, turning abundance into liability.",[17,4744,4746],{"id":4745},"reactive-cycles-perpetuate-the-misdiagnosis","Reactive Cycles Perpetuate the Misdiagnosis",[22,4748,4749],{},"Industry workflows—code, test, debug, fix, repeat—feel intuitive but react to flaws rather than preventing them through rigorous specs. Tools like unit tests and fuzzing refine this loop without addressing root causes, resembling adaptation more than engineering. To build reliable systems at AI scale, prioritize specification rigor first: define behaviors exhaustively before generation, then validate outputs against them.",{"title":128,"searchDepth":129,"depth":129,"links":4751},[4752,4753,4754],{"id":4731,"depth":129,"text":4732},{"id":4738,"depth":129,"text":4739},{"id":4745,"depth":129,"text":4746},[135],{"content_references":4757,"triage":4758},[],{"relevance":166,"novelty":4261,"quality":166,"actionability":4261,"composite":4759,"reasoning":4760},3.6,"Category: Software Engineering. The article addresses a key pain point for product builders regarding the importance of precise specifications in software development, which resonates with the audience's need for actionable insights. It provides a fresh perspective on the shift in bottlenecks from code generation to specification but lacks detailed frameworks or tools for implementation.","\u002Fsummaries\u002F0655ba472b96a06c-specs-not-code-are-the-real-bottleneck-summary","2026-04-15 14:54:50","2026-04-15 15:39:00",{"title":4721,"description":128},{"loc":4761},"0655ba472b96a06c","https:\u002F\u002Flevelup.gitconnected.com\u002Fthe-real-bottleneck-is-not-the-code-1ecf87ce605d?source=rss----5517fd7b58a6---4","summaries\u002F0655ba472b96a06c-specs-not-code-are-the-real-bottleneck-summary",[181,184,183],"AI tools make generating code effortless, but precisely defining what code should do—specification—remains the hardest part, explaining why bugs and complexity persist.",[184,183],"Cqzy_F-1FYNeFvcJdSMczCUr2QSzUsgishArwJZsghg",{"id":4774,"title":4775,"ai":4776,"body":4781,"categories":4892,"created_at":136,"date_modified":136,"description":128,"extension":137,"faq":136,"featured":138,"kicker_label":136,"meta":4893,"navigation":169,"path":4897,"published_at":136,"question":136,"scraped_at":4898,"seo":4899,"sitemap":4900,"source_id":4901,"source_name":4902,"source_type":177,"source_url":4903,"stem":4904,"tags":4905,"thumbnail_url":136,"tldr":4906,"tweet":136,"unknown_tags":4907,"__hash__":4908},"summaries\u002Fsummaries\u002F4e34a0b2f37369ab-xp-enables-evolutionary-design-via-refactoring-and-summary.md","XP Enables Evolutionary Design via Refactoring and Simplicity",{"provider":7,"model":4072,"input_tokens":4777,"output_tokens":4778,"processing_time_ms":4779,"cost_usd":4780},8876,2752,13683,0.00286005,{"type":14,"value":4782,"toc":4885},[4783,4787,4790,4793,4796,4800,4803,4806,4809,4813,4816,4819,4822,4826,4829,4832,4836,4865,4868],[17,4784,4786],{"id":4785},"flaws-in-traditional-planned-and-evolutionary-design","Flaws in Traditional Planned and Evolutionary Design",[22,4788,4789],{},"Martin Fowler contrasts two dominant design approaches in software: evolutionary (design emerges during coding) and planned (Big Design Up Front, or BDUF, using tools like UML). Pure evolutionary design, often called 'code and fix,' leads to software entropy—ad-hoc decisions accumulate, making changes exponentially harder and breeding bugs. Fowler notes, 'As design deteriorates, so does your ability to make changes effectively,' likening it to a nightmare where fixes grow costlier over time.",[22,4791,4792],{},"Planned design draws from civil engineering: architects create detailed blueprints (e.g., UML diagrams) before builders code, avoiding tactical pitfalls. This works better than code-and-fix but fails in software due to three issues. First, programmers uncover unpredicted issues during implementation, but designers have moved on, leading to workarounds and entropy. Second, designers lose touch with rapidly evolving tools and platforms, eroding programmer respect. Third, changing requirements—often business-driven and unforeseen—undermine even flexible designs. Fowler observes, 'Changing requirements are the number one big issue that causes headaches in software projects,' as anticipating volatility is nearly impossible without perfect foresight.",[22,4794,4795],{},"He rejects both extremes: code-and-fix is disastrous, but planned design's rigidity ignores software's fluidity. XP offers a viable evolutionary path by addressing these via enabling practices.",[17,4797,4799],{"id":4798},"xp-practices-flatten-the-change-curve-for-viable-evolution","XP Practices Flatten the Change Curve for Viable Evolution",[22,4801,4802],{},"XP assumes the 'change curve'—where fixes cost exponentially more later—can be flattened, making evolutionary design practical. This requires coupled practices: without enablers, exploitation fails.",[22,4804,4805],{},"Core enablers are automated testing (unit and acceptance), continuous integration (daily merges with full builds\u002Ftests), and refactoring (disciplined restructuring without changing behavior). Testing provides a safety net; CI keeps teams synced; refactoring maintains simplicity. Fowler shares personal experience: learning proper refactoring from Kent Beck transformed his effectiveness, inspiring his book. At Thoughtworks, introducing testing and CI alone markedly improved development speed, challenging the need for all XP practices but validating their power.",[22,4807,4808],{},"These shift the design balance. Jim Highsmith analogizes it to scales: traditional processes overweight planned design; XP balances it with refactoring. Some upfront design persists—spikes (time-boxed investigations) and iteration planning—but most evolves via refactor. Fowler admits uncertainty on the exact balance: 'One thing we haven't yet figured out is where the balance point is.'",[17,4810,4812],{"id":4811},"simple-design-and-yagni-counter-over-engineering","Simple Design and YAGNI Counter Over-Engineering",[22,4814,4815],{},"XP's 'Do the Simplest Thing That Could Possibly Work' and 'You Aren't Gonna Need It' (YAGNI) reject upfront flexibility like frameworks or reusable components. Build only for current iteration needs; evolve later. For a Money class, implement addition now, multiplication next—even if trivial—avoiding economic waste (delaying current stories) and prediction errors.",[22,4817,4818],{},"Complexity burdens comprehension and modification until needed. Fowler explains, 'A complex design is more difficult to understand than a simple one. Therefore any modification of the system is made harder by added complexity.' YAGNI works only with XP's low change costs; without testing\u002Frefactoring, it invites entropy.",[22,4820,4821],{},"Kent Beck's four simplicity criteria (in order): (1) passes all tests, (2) no duplication, (3) reveals intention (clear, non-clever code), (4) minimal classes\u002Fmethods. No-duplication echoes DRY (Pragmatic Programmer). Revealing intention varies: JUnit's decorators clarify for pattern-savvy developers but confuse novices. Uncle Bob (Robert Martin) advises, 'It's easier to refactor over-design than it is to refactor no design,' prioritizing refactor willingness over perfect simplicity upfront. Refactoring doesn't violate YAGNI—it removes unneeded complexity to stay simple.",[17,4823,4825],{"id":4824},"patterns-and-architecture-evolve-dont-dictate","Patterns and Architecture Evolve, Don't Dictate",[22,4827,4828],{},"Patterns face skepticism in XP, as newcomers overapply them (e.g., 16 patterns in 32 lines). XP evolves into patterns via simple design and refactorings, not forcing them early. Fowler, a patterns advocate, insists they're vital: 'Patterns are a backbone of design knowledge, valuable whatever your process.' Use gradually: start simple, recognize when a pattern fits, weigh its cost. Advice for XP teams: learn patterns deeply, evolve implementations, teach via code reviews\u002Fspikes.",[22,4830,4831],{},"Architecture—core, hard-to-change elements—grows similarly. Avoid BDUF architectures; let them emerge from simple components under refactoring discipline.",[17,4833,4835],{"id":4834},"key-takeaways","Key Takeaways",[98,4837,4838,4841,4844,4847,4850,4853,4856,4859,4862],{},[56,4839,4840],{},"Use XP enablers (testing, CI, refactoring) to flatten the change curve, enabling safe evolutionary design over pure code-and-fix.",[56,4842,4843],{},"Balance minimal upfront design (spikes, iteration planning) with heavy refactoring; exact ratio evolves per project.",[56,4845,4846],{},"Follow YAGNI and simple design: implement only current needs to avoid waste and complexity drag.",[56,4848,4849],{},"Judge simplicity by Beck's criteria: tests pass, no duplication, intention-revealing, minimal entities.",[56,4851,4852],{},"Evolve patterns and architecture gradually; know them to recognize and introduce judiciously.",[56,4854,4855],{},"Refactor relentlessly—it's cheaper to simplify over-design than add to under-design.",[56,4857,4858],{},"Anticipate no requirements perfectly; business changes demand adaptable processes.",[56,4860,4861],{},"Prioritize clarity over cleverness; duplication elimination alone yields big wins.",[56,4863,4864],{},"XP doesn't kill design or patterns—it redirects them to evolutionary styles.",[22,4866,4867],{},"Notable quotes:",[98,4869,4870,4873,4876,4879,4882],{},[56,4871,4872],{},"Kent Beck (via Fowler): 'Design is there to enable you to keep changing the software easily in the long term.' (Highlights design's true purpose, contrasting entropy.)",[56,4874,4875],{},"XP slogans: 'Do the Simplest Thing that Could Possibly Work' and 'You Aren't Going to Need It (YAGNI).' (Core rules preventing over-engineering.)",[56,4877,4878],{},"Robert Martin: 'It's easier to refactor over-design than it is to refactor no design.' (Emphasizes safe erring toward slight over-design.)",[56,4880,4881],{},"Martin Fowler: 'The willingness to refactor is much more important than knowing what the simplest thing is right away.' (Stresses process over perfectionism.)",[56,4883,4884],{},"Joshua Kerievsky (contextual): Patterns under-emphasized in XP, but evolve via simple starts. (Sparks debate on patterns' role.)",{"title":128,"searchDepth":129,"depth":129,"links":4886},[4887,4888,4889,4890,4891],{"id":4785,"depth":129,"text":4786},{"id":4798,"depth":129,"text":4799},{"id":4811,"depth":129,"text":4812},{"id":4824,"depth":129,"text":4825},{"id":4834,"depth":129,"text":4835},[135],{"content_references":4894,"triage":4895},[],{"relevance":166,"novelty":4261,"quality":166,"actionability":4261,"composite":4759,"reasoning":4896},"Category: Software Engineering. The article discusses Extreme Programming (XP) as a method to counter software entropy, which directly addresses the audience's pain point of managing design and development processes effectively. It provides insights into practices like automated testing and continuous integration, which are actionable but could benefit from more detailed implementation guidance.","\u002Fsummaries\u002F4e34a0b2f37369ab-xp-enables-evolutionary-design-via-refactoring-and-summary","2026-04-16 03:07:43",{"title":4775,"description":128},{"loc":4897},"4e34a0b2f37369ab","__oneoff__","https:\u002F\u002Fmartinfowler.com\u002Farticles\u002FdesignDead.html","summaries\u002F4e34a0b2f37369ab-xp-enables-evolutionary-design-via-refactoring-and-summary",[182,184,183],"Extreme Programming counters software entropy in evolutionary design with testing, continuous integration, refactoring, and simple design rules like YAGNI, balancing minimal upfront planning with ongoing evolution over rigid Big Design Up Front.",[184,183],"tU_o-1H1nTIoH7y-oe-W27eHLR8gAUoUT4R8ZCIjeuY"]