[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6QDYV72ZBWW5650PR164T8Z":3,"skill-same:01M6QDYV72ZBWW5650PR164T8Z":145},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":39,"linkOnly":40,"markdownContent":41,"markdownBody":42,"frontMatter":43,"refName":52,"commitSha":53,"skillDirectory":54,"forksCount":14,"repositoryHtmlUrl":55,"repositoryHomepageUrl":56,"ownerHtmlUrl":57,"ownerBlogUrl":58,"ownerDescription":59,"updatedAt":60,"install":61,"resources":74},"01M6QDYV72ZBWW5650PR164T8Z","analytical-method-validation",null,"Plans and evaluates analytical method validation, verification, and transfer using Python scripts (plan_validation, check_response, check_accuracy_precision, check_detection_limits, check_bioanalytical_run, compare_methods) under ICH Q2(R2)\u002FQ14, ICH M10, USP 1220\u002F1225\u002F1226, CLSI EP, or ISO\u002FIEC 17025. Covers protocols, linearity, accuracy and precision, DL\u002FQL, M10 run checks, TOST equivalence, Deming and Passing-Bablok. Use when designing a validation protocol with pre-stated acceptance criteria. Use when evaluating linearity, precision, or detection limit data. Use when checking an ICH M10 bioanalytical run or ISR. Use when comparing or transferring a method between labs. Does not decide a method is validated; USP, CLSI, ISO text is not supplied.","Tashima-Tarsh\u002FDisha6.6","Tashima-Tarsh","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F269906498?v=4","01M6PBH98X03XERH0HFT4PFB1P","NITISH KUMAR","01M6PBH9DA0M6KM3Z12P848F0K",0,"MIT","https:\u002F\u002Fgithub.com\u002FTashima-Tarsh\u002FDisha6.6\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fkal-analytical-method-validation\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38],"validation","analytical","analytical method validation","write","limits","accuracy","r2","limit","scipy","methods","edit","design","read","decide","text","plan","Reproducible","library","run","python","2026-11-10 10:12:30",false,"---\nname: analytical-method-validation\ndescription: Plans and evaluates analytical method validation, verification, and transfer using Python scripts (plan_validation, check_response, check_accuracy_precision, check_detection_limits, check_bioanalytical_run, compare_methods) under ICH Q2(R2)\u002FQ14, ICH M10, USP 1220\u002F1225\u002F1226, CLSI EP, or ISO\u002FIEC 17025. Covers protocols, linearity, accuracy and precision, DL\u002FQL, M10 run checks, TOST equivalence, Deming and Passing-Bablok. Use when designing a validation protocol with pre-stated acceptance criteria. Use when evaluating linearity, precision, or detection limit data. Use when checking an ICH M10 bioanalytical run or ISR. Use when comparing or transferring a method between labs. Does not decide a method is validated; USP, CLSI, ISO text is not supplied.\nlicense: MIT\ncompatibility: Requires Python 3.11+. Scripts use only the standard library - no numpy, scipy, or network access. Statistical distributions are computed from first principles so results are reproducible in any conforming interpreter.\nallowed-tools: Read Write Edit Bash\nmetadata:\n  version: '1.1'\n  category: ideation-and-design\n  maintainer: Kalaris Labs\n  last-reviewed: '2026-07-27'\n  tags: method validation, ICH Q2, bioanalysis, analytical chemistry, quality control\n---\n\n# Analytical Method Validation\n\n## When to use\n\nAny time the question is whether an analytical procedure is fit for its intended purpose:\ndesigning a validation study, evaluating validation data, verifying a compendial procedure,\ntransferring a procedure to another laboratory or instrument, or defending any of these in a\nreport.\n\n## The two rules\n\n**1. Establish which framework governs before designing anything.** The same assay validates\ndifferently under ICH Q2(R2), USP \u003C1225>, ICH M10, CLSI EP, and ISO\u002FIEC 17025. They differ in\nwhich characteristics are required, how the studies are laid out, and whether numeric acceptance\ncriteria are supplied at all. Blending them produces a protocol that satisfies none of them.\n\n**2. State acceptance criteria before collecting data.** Criteria chosen after seeing results are\nnot acceptance criteria, and deciding them post hoc is a standing audit finding. ICH Q2(R2)\ndeliberately supplies almost no numeric criteria — they have to come from the specification, the\nanalytical target profile (ICH Q14 section 3), or development data. ICH M10 is the exception: it\nsupplies explicit numbers, and they differ between chromatographic assays and ligand binding\nassays.\n\n## Scope\n\nThis skill plans studies, computes the statistics correctly, and structures the documentation. It\ndoes **not** decide that a procedure is validated, release a batch, accept or reject a run, close\nan investigation, or substitute for the analyst, the technical reviewer, the quality unit, or the\nregulator. Every script reports; none of them concludes.\n\n## Copyright boundary\n\nICH guidelines are published openly and licensed for reuse with acknowledgement, so their\nrequirements are encoded directly in this skill. **USP general chapters, CLSI EP documents, and\nISO standards are copyrighted and paywalled.** For those, this skill supplies the designation,\nscope, and where to obtain an authorised copy — never the text, never invented thresholds. Do not\nask an agent to retrieve, transcribe, or reconstruct their content. If a number matters and it\nlives in a paywalled document, read it from the authorised copy.\n\n## Frameworks\n\n```bash\ncd skills\u002Fanalytical-method-validation\u002Fscripts\npython3 plan_validation.py --list-frameworks\n```\n\n| Key | Governs | Numeric criteria supplied |\n| --- | --- | --- |\n| `ich-q2r2` | Release and stability testing of drug substances and products | Almost none — you derive them |\n| `ich-m10` | Bioanalytical concentration measurement (PK, TK, BE) | Yes, and they differ by modality |\n| `usp-1220` | Compendial procedure lifecycle, three stages | Paywalled |\n| `usp-1225` \u002F `usp-1226` | Validation \u002F verification of compendial procedures | Paywalled |\n| `clsi` | Clinical laboratory measurement procedures (EP series) | Paywalled |\n| `iso-17025` | Lab-developed and modified methods under accreditation | No — \"to the extent necessary\" |\n\n**Q2(R2) replaced Q2(R1) in November 2023 and restructured the characteristics.** Range is now\nthe parent characteristic (section 3.2), containing *response* (linearity) and *validation of\nlower range limits* (DL\u002FQL). Accuracy and precision are section 3.3 and may be evaluated in\ncombination against a single criterion. Robustness is treated as a development activity and\ncross-refers to ICH Q14. Multivariate procedures are addressed explicitly (2.5 and 3.2.2.3), and\nAnnex 2 adds worked examples for techniques Q2(R1) never covered — quantitative ¹H-NMR, NIR,\nquantitative LC\u002FMS, qPCR, biological assays, and particle size. A Q2(R1)-shaped protocol — a flat\nlist of linearity, range, accuracy, precision, specificity, LOD, LOQ, robustness — is out of date.\nNote also the error correction dated 30 November 2023 to Table 5 and Tables 6–11.\n\n## Scripts\n\n```bash\ncd skills\u002Fanalytical-method-validation\u002Fscripts\n```\n\n| Script | Question answered |\n| --- | --- |\n| `plan_validation.py` | Which framework, which characteristics, what study layout, what protocol? |\n| `check_response.py` | Does the calibration model actually hold across the range? |\n| `check_accuracy_precision.py` | What is the recovery, and how much of the variability is between days? |\n| `check_detection_limits.py` | What are DL and QL by each allowed approach, and do they serve the reporting threshold? |\n| `check_bioanalytical_run.py` | Does this run meet ICH M10 for its modality? |\n| `compare_methods.py` | Are two procedures equivalent, at a pre-stated margin? |\n\nAll take `--format table|tsv|json`. Provenance, guideline citations, and caveats go to stderr;\ndata goes to stdout, so `> out.tsv` keeps them separate. Exit code is `0` for no findings, `1`\nwhen findings were raised, `2` for bad input — so any of them can gate a workflow.\n\n## Workflow\n\n### 1. Fix the framework and the required characteristics\n\n```bash\npython3 plan_validation.py --framework ich-q2r2 --attribute assay --technique hplc --range-use assay\n```\n\nQ2(R2) Table 1 decides what is required from the *measured attribute*, not from the technique. For\nan assay: specificity, response, accuracy, repeatability, intermediate precision. For a limit\ntest: specificity and DL only. For an identity test: specificity alone. Attributes accepted include\n`assay`, `impurity` (quantitative), `impurity-limit`, and `identity`.\n\nReportable range comes from the specification. Q2(R2) Table 2 gives worked examples — 80–120% of\ndeclared content for an assay, 70–130% for content uniformity, reporting threshold to 120% of the\nspecification for an impurity.\n\n### 2. Generate the protocol and fill in the criteria\n\n```bash\npython3 plan_validation.py --framework ich-q2r2 --attribute impurity --protocol > protocol.md\n```\n\nEvery bracketed field is a decision to make and record *before* data collection. The protocol\nskeleton deliberately refuses to pre-fill acceptance criteria for Q2(R2) work, because there is no\ndefensible default.\n\n### 3. Evaluate the response\n\n```bash\npython3 check_response.py -i calibration.csv --max-back-calc-error 2\n```\n\nInput is `level,response`, one row per injection; repeated rows at the same level are replicates,\nand supplying them is what makes the linearity test possible.\n\nReal output from a curve that a coefficient of determination would wave through:\n\n```\nstatistic                           value\ndistinct levels                     5\nslope                               166.6000\nintercept                           2495.0000\nintercept CI includes 0             no\ncoefficient of determination (r2)   0.9830\nlack-of-fit F                       469.5294\nlack-of-fit p                       1.5139e-06\nruns test p                         0.0492\n\nlevel     n  mean_response  mean_back_calculated  relative_error_pct\n50.0000   2  10075.0000     45.4982               -9.0036\n75.0000   2  15150.0000     75.9604               1.2805\n100.0000  2  20050.0000     105.3721              5.3721\n125.0000  2  24050.0000     129.3818              3.5054\n150.0000  2  26450.0000     143.7875              -4.1417\n```\n\nr² = 0.983 and the model is unusable: −9.0% back-calculated error at the bottom of the range,\nlack-of-fit p = 1.5 × 10⁻⁶, non-random residual signs. **r² is not evidence of linearity** — it\nrises with range and is nearly insensitive to curvature. The lack-of-fit F test against pure error\nand the residual pattern are the evidence, which is why Q2(R2) 3.2.2.1 asks for an analysis of the\ndeviation of points from the line rather than a correlation coefficient alone.\n\nAdd `--weight 1\u002Fx2` for a wide-range curve. The script flags heteroscedasticity when the residual\nvariance in the top third of the range exceeds the bottom third by more than 10×, because an\nunweighted fit then biases exactly the low end where a reporting threshold lives.\n\n### 4. Evaluate accuracy and precision\n\n```bash\npython3 check_accuracy_precision.py -i ap.csv --accuracy-limit 2 --rsd-limit 1.0 --design-check assay\n```\n\nInput is `level,measured,group`, where `group` is the intermediate-precision factor — day, analyst,\nor instrument.\n\n```\nlevel  component                       sd      rsd_pct  df      ci90_low_sd  ci90_high_sd\n100    repeatability (within group)    0.0707  0.0707   3       0.0438       0.2065\n100    between-group                   1.6515  1.6515   2       n\u002Fa          n\u002Fa\n100    intermediate precision (total)  1.6530  1.6530   2.0037  0.9554       7.2821\n```\n\nRepeatability of 0.07% RSD looks superb; intermediate precision is 1.65%, twenty-three times\nlarger, because the variability lives entirely between days. Reporting the within-day figure as\nthe procedure's precision would understate routine performance by more than an order of magnitude.\nThis is why the script fits a one-way random-effects model rather than pooling.\n\nTwo traps the script handles for you:\n\n- **Precision is estimated within each level, never pooled across levels.** Pooling 80\u002F100\u002F120%\n  results into one standard deviation turns the range itself into apparent imprecision. The script\n  reports per level, plus a level-independent view as percent of nominal.\n- **`--require-ci-within-limit`** enforces that the whole confidence interval sits inside the\n  limit, not just the mean. Q2(R2) 3.3.1.4 asks for the interval to be *compatible with* the\n  criterion; a mean that scrapes inside on six replicates has not demonstrated much.\n\n### 5. Establish DL and QL, and confirm them\n\n```bash\npython3 check_detection_limits.py --calibration lowcal.csv --blanks blanks.csv \\\n    --confirm-ql 0.05 --confirm-data ql_check.csv --reporting-threshold 0.05\n```\n\n```\napproach                                          sigma   slope      DL      QL\nsd-and-slope (sigma = residual SD of regression)  7.2816  5033.3490  0.0048  0.0145\nsd-and-slope (sigma = SD of y-intercept)          4.3303  5033.3490  0.0028  0.0086\nsd-and-slope (sigma = SD of 8 blanks)             3.7702  5033.3490  0.0025  0.0075\n```\n\nThe same data give QL estimates spanning 1.9×, purely from the choice of σ. Q2(R2) 3.2.3.5\ntherefore requires the limit **and the approach used to determine it** to be reported, and an\nestimated limit to be confirmed with samples at or near it. For an impurity procedure the QL must\nbe at or below the reporting threshold. Reaching for `3.3σ\u002Fslope` reflexively, reporting one number\nwith no named approach, and never confirming it are three separate findings.\n\n### 6. Bioanalytical runs under ICH M10\n\n```bash\npython3 check_bioanalytical_run.py --modality chromatographic --run run1.csv\npython3 check_bioanalytical_run.py --modality lba --isr isr.csv\npython3 check_bioanalytical_run.py --modality lba --criteria\n```\n\n`--modality` is mandatory and has no default, because the criteria genuinely differ:\n\n| | Chromatographic | Ligand binding assay |\n| --- | --- | --- |\n| Calibration tolerance | ±15%, ±20% at LLOQ | ±20%, ±25% at LLOQ and ULOQ |\n| Accuracy \u002F precision | ±15% \u002F ≤15% CV (±20% \u002F ≤20% at LLOQ) | ±20% \u002F ≤20% CV (±25% \u002F ≤25% at LLOQ and ULOQ) |\n| A&P design | 4 QC levels, 5 replicates\u002Frun, ≥3 runs over ≥2 days | 5 QC levels, 3 replicates\u002Frun, ≥6 runs over ≥2 days |\n| Total error | no such criterion | ≤30%, ≤40% at LLOQ and ULOQ |\n| ISR agreement | ±20% for ≥2\u002F3 of repeats | ±30% for ≥2\u002F3 of repeats |\n\nApplying the ±15% chromatographic numbers to a ligand binding assay, or importing the LBA total-error\ncriterion into a chromatographic method, are both common and both wrong.\n\nThe run check enforces the per-level rule that gets missed: at least 2\u002F3 of *all* QCs **and** at\nleast 50% at *each* level. A run can pass the overall fraction while a single level fails\ncompletely.\n\n```\nfinding: QC level high: 0\u002F2 within tolerance (0%); M10 requires at least 50% at each level\n```\n\n### 7. Transfer and method comparison\n\n```bash\npython3 compare_methods.py -i paired.csv --margin 2 --relative --slope-tolerance 0.05\n```\n\n```\nmean difference (%)                       1.4646\nTOST margin                               2.0000\nTOST p-value                              1.0528e-13\n90% CI (TOST)                             1.44127 to 1.48797\nequivalent at stated margin               yes\n--- for contrast only ---\npaired t-test p (NOT equivalence)         0.0000\nOLS slope (biased here)                   1.0396\nDeming slope                              1.0398\nPassing-Bablok slope                      1.0351\n```\n\nTwo errors this replaces:\n\n- **\"p > 0.05, no significant difference, therefore the methods are equivalent.\"** Failing to\n  detect a difference is not evidence of equivalence, and on a small transfer dataset that outcome\n  is close to guaranteed. TOST tests the hypothesis that matters — that the true difference lies\n  inside a pre-stated margin. Here the t test says the difference is highly significant *and* TOST\n  says the methods are equivalent at ±2%; both are true, and only one answers the question.\n- **Ordinary least squares for method comparison.** OLS assumes the reference values carry no\n  error, which is false when comparing two procedures, and biases the slope toward zero. Deming\n  (with a stated error-variance ratio) and Passing–Bablok (non-parametric, outlier-resistant) are\n  the appropriate regressions and are reported side by side with OLS for contrast.\n\nThe script also flags proportional bias — when the difference trends with concentration, a single\nmean bias and its limits of agreement are misleading regardless of how tight they look.\n\n## What this skill exists to prevent\n\n1. Validating against ICH Q2(R1)'s structure three years after Q2(R2) replaced it.\n2. Acceptance criteria written after the data were seen.\n3. r² presented as evidence of linearity.\n4. Repeatability reported as the procedure's precision, with the between-day component invisible.\n5. One DL\u002FQL number with no named approach and no confirmation.\n6. Chromatographic M10 criteria applied to a ligand binding assay, or the reverse.\n7. A t test's non-significance presented as equivalence at a method transfer.\n\n## References\n\n- `references\u002Fframework-selection.md` — which framework governs, and the questions that decide it\n- `references\u002Fich-q2r2.md` — structure, Table 1 and Table 2, per-characteristic recommended data\n- `references\u002Fich-m10-bioanalytical.md` — the full chromatographic and LBA criteria side by side\n- `references\u002Fcompendial-and-clsi.md` — USP, CLSI and ISO designations, scope, and how to cite them\n- `references\u002Fstatistics.md` — the statistical methods, why each one, and the common errors\n- `references\u002Fsource-ledger.md` — provenance and research dates for every claim in this skill\n\n## Assets\n\n- `assets\u002Fvalidation-protocol-template.md` — protocol structure with criteria stated up front\n- `assets\u002Fvalidation-report-template.md` — report structure with raw-data traceability\n\n## Related skills\n\n- `iso-standards-readiness`: Prepares and structurally reviews readiness evidence for ISO management-system and laboratory-competence standards - ISO 13485 medical devi…\n","# Analytical Method Validation\n\n## When to use\n\nAny time the question is whether an analytical procedure is fit for its intended purpose:\ndesigning a validation study, evaluating validation data, verifying a compendial procedure,\ntransferring a procedure to another laboratory or instrument, or defending any of these in a\nreport.\n\n## The two rules\n\n**1. Establish which framework governs before designing anything.** The same assay validates\ndifferently under ICH Q2(R2), USP \u003C1225>, ICH M10, CLSI EP, and ISO\u002FIEC 17025. They differ in\nwhich characteristics are required, how the studies are laid out, and whether numeric acceptance\ncriteria are supplied at all. Blending them produces a protocol that satisfies none of them.\n\n**2. State acceptance criteria before collecting data.** Criteria chosen after seeing results are\nnot acceptance criteria, and deciding them post hoc is a standing audit finding. ICH Q2(R2)\ndeliberately supplies almost no numeric criteria — they have to come from the specification, the\nanalytical target profile (ICH Q14 section 3), or development data. ICH M10 is the exception: it\nsupplies explicit numbers, and they differ between chromatographic assays and ligand binding\nassays.\n\n## Scope\n\nThis skill plans studies, computes the statistics correctly, and structures the documentation. It\ndoes **not** decide that a procedure is validated, release a batch, accept or reject a run, close\nan investigation, or substitute for the analyst, the technical reviewer, the quality unit, or the\nregulator. Every script reports; none of them concludes.\n\n## Copyright boundary\n\nICH guidelines are published openly and licensed for reuse with acknowledgement, so their\nrequirements are encoded directly in this skill. **USP general chapters, CLSI EP documents, and\nISO standards are copyrighted and paywalled.** For those, this skill supplies the designation,\nscope, and where to obtain an authorised copy — never the text, never invented thresholds. Do not\nask an agent to retrieve, transcribe, or reconstruct their content. If a number matters and it\nlives in a paywalled document, read it from the authorised copy.\n\n## Frameworks\n\n```bash\ncd skills\u002Fanalytical-method-validation\u002Fscripts\npython3 plan_validation.py --list-frameworks\n```\n\n| Key | Governs | Numeric criteria supplied |\n| --- | --- | --- |\n| `ich-q2r2` | Release and stability testing of drug substances and products | Almost none — you derive them |\n| `ich-m10` | Bioanalytical concentration measurement (PK, TK, BE) | Yes, and they differ by modality |\n| `usp-1220` | Compendial procedure lifecycle, three stages | Paywalled |\n| `usp-1225` \u002F `usp-1226` | Validation \u002F verification of compendial procedures | Paywalled |\n| `clsi` | Clinical laboratory measurement procedures (EP series) | Paywalled |\n| `iso-17025` | Lab-developed and modified methods under accreditation | No — \"to the extent necessary\" |\n\n**Q2(R2) replaced Q2(R1) in November 2023 and restructured the characteristics.** Range is now\nthe parent characteristic (section 3.2), containing *response* (linearity) and *validation of\nlower range limits* (DL\u002FQL). Accuracy and precision are section 3.3 and may be evaluated in\ncombination against a single criterion. Robustness is treated as a development activity and\ncross-refers to ICH Q14. Multivariate procedures are addressed explicitly (2.5 and 3.2.2.3), and\nAnnex 2 adds worked examples for techniques Q2(R1) never covered — quantitative ¹H-NMR, NIR,\nquantitative LC\u002FMS, qPCR, biological assays, and particle size. A Q2(R1)-shaped protocol — a flat\nlist of linearity, range, accuracy, precision, specificity, LOD, LOQ, robustness — is out of date.\nNote also the error correction dated 30 November 2023 to Table 5 and Tables 6–11.\n\n## Scripts\n\n```bash\ncd skills\u002Fanalytical-method-validation\u002Fscripts\n```\n\n| Script | Question answered |\n| --- | --- |\n| `plan_validation.py` | Which framework, which characteristics, what study layout, what protocol? |\n| `check_response.py` | Does the calibration model actually hold across the range? |\n| `check_accuracy_precision.py` | What is the recovery, and how much of the variability is between days? |\n| `check_detection_limits.py` | What are DL and QL by each allowed approach, and do they serve the reporting threshold? |\n| `check_bioanalytical_run.py` | Does this run meet ICH M10 for its modality? |\n| `compare_methods.py` | Are two procedures equivalent, at a pre-stated margin? |\n\nAll take `--format table|tsv|json`. Provenance, guideline citations, and caveats go to stderr;\ndata goes to stdout, so `> out.tsv` keeps them separate. Exit code is `0` for no findings, `1`\nwhen findings were raised, `2` for bad input — so any of them can gate a workflow.\n\n## Workflow\n\n### 1. Fix the framework and the required characteristics\n\n```bash\npython3 plan_validation.py --framework ich-q2r2 --attribute assay --technique hplc --range-use assay\n```\n\nQ2(R2) Table 1 decides what is required from the *measured attribute*, not from the technique. For\nan assay: specificity, response, accuracy, repeatability, intermediate precision. For a limit\ntest: specificity and DL only. For an identity test: specificity alone. Attributes accepted include\n`assay`, `impurity` (quantitative), `impurity-limit`, and `identity`.\n\nReportable range comes from the specification. Q2(R2) Table 2 gives worked examples — 80–120% of\ndeclared content for an assay, 70–130% for content uniformity, reporting threshold to 120% of the\nspecification for an impurity.\n\n### 2. Generate the protocol and fill in the criteria\n\n```bash\npython3 plan_validation.py --framework ich-q2r2 --attribute impurity --protocol > protocol.md\n```\n\nEvery bracketed field is a decision to make and record *before* data collection. The protocol\nskeleton deliberately refuses to pre-fill acceptance criteria for Q2(R2) work, because there is no\ndefensible default.\n\n### 3. Evaluate the response\n\n```bash\npython3 check_response.py -i calibration.csv --max-back-calc-error 2\n```\n\nInput is `level,response`, one row per injection; repeated rows at the same level are replicates,\nand supplying them is what makes the linearity test possible.\n\nReal output from a curve that a coefficient of determination would wave through:\n\n```\nstatistic                           value\ndistinct levels                     5\nslope                               166.6000\nintercept                           2495.0000\nintercept CI includes 0             no\ncoefficient of determination (r2)   0.9830\nlack-of-fit F                       469.5294\nlack-of-fit p                       1.5139e-06\nruns test p                         0.0492\n\nlevel     n  mean_response  mean_back_calculated  relative_error_pct\n50.0000   2  10075.0000     45.4982               -9.0036\n75.0000   2  15150.0000     75.9604               1.2805\n100.0000  2  20050.0000     105.3721              5.3721\n125.0000  2  24050.0000     129.3818              3.5054\n150.0000  2  26450.0000     143.7875              -4.1417\n```\n\nr² = 0.983 and the model is unusable: −9.0% back-calculated error at the bottom of the range,\nlack-of-fit p = 1.5 × 10⁻⁶, non-random residual signs. **r² is not evidence of linearity** — it\nrises with range and is nearly insensitive to curvature. The lack-of-fit F test against pure error\nand the residual pattern are the evidence, which is why Q2(R2) 3.2.2.1 asks for an analysis of the\ndeviation of points from the line rather than a correlation coefficient alone.\n\nAdd `--weight 1\u002Fx2` for a wide-range curve. The script flags heteroscedasticity when the residual\nvariance in the top third of the range exceeds the bottom third by more than 10×, because an\nunweighted fit then biases exactly the low end where a reporting threshold lives.\n\n### 4. Evaluate accuracy and precision\n\n```bash\npython3 check_accuracy_precision.py -i ap.csv --accuracy-limit 2 --rsd-limit 1.0 --design-check assay\n```\n\nInput is `level,measured,group`, where `group` is the intermediate-precision factor — day, analyst,\nor instrument.\n\n```\nlevel  component                       sd      rsd_pct  df      ci90_low_sd  ci90_high_sd\n100    repeatability (within group)    0.0707  0.0707   3       0.0438       0.2065\n100    between-group                   1.6515  1.6515   2       n\u002Fa          n\u002Fa\n100    intermediate precision (total)  1.6530  1.6530   2.0037  0.9554       7.2821\n```\n\nRepeatability of 0.07% RSD looks superb; intermediate precision is 1.65%, twenty-three times\nlarger, because the variability lives entirely between days. Reporting the within-day figure as\nthe procedure's precision would understate routine performance by more than an order of magnitude.\nThis is why the script fits a one-way random-effects model rather than pooling.\n\nTwo traps the script handles for you:\n\n- **Precision is estimated within each level, never pooled across levels.** Pooling 80\u002F100\u002F120%\n  results into one standard deviation turns the range itself into apparent imprecision. The script\n  reports per level, plus a level-independent view as percent of nominal.\n- **`--require-ci-within-limit`** enforces that the whole confidence interval sits inside the\n  limit, not just the mean. Q2(R2) 3.3.1.4 asks for the interval to be *compatible with* the\n  criterion; a mean that scrapes inside on six replicates has not demonstrated much.\n\n### 5. Establish DL and QL, and confirm them\n\n```bash\npython3 check_detection_limits.py --calibration lowcal.csv --blanks blanks.csv \\\n    --confirm-ql 0.05 --confirm-data ql_check.csv --reporting-threshold 0.05\n```\n\n```\napproach                                          sigma   slope      DL      QL\nsd-and-slope (sigma = residual SD of regression)  7.2816  5033.3490  0.0048  0.0145\nsd-and-slope (sigma = SD of y-intercept)          4.3303  5033.3490  0.0028  0.0086\nsd-and-slope (sigma = SD of 8 blanks)             3.7702  5033.3490  0.0025  0.0075\n```\n\nThe same data give QL estimates spanning 1.9×, purely from the choice of σ. Q2(R2) 3.2.3.5\ntherefore requires the limit **and the approach used to determine it** to be reported, and an\nestimated limit to be confirmed with samples at or near it. For an impurity procedure the QL must\nbe at or below the reporting threshold. Reaching for `3.3σ\u002Fslope` reflexively, reporting one number\nwith no named approach, and never confirming it are three separate findings.\n\n### 6. Bioanalytical runs under ICH M10\n\n```bash\npython3 check_bioanalytical_run.py --modality chromatographic --run run1.csv\npython3 check_bioanalytical_run.py --modality lba --isr isr.csv\npython3 check_bioanalytical_run.py --modality lba --criteria\n```\n\n`--modality` is mandatory and has no default, because the criteria genuinely differ:\n\n| | Chromatographic | Ligand binding assay |\n| --- | --- | --- |\n| Calibration tolerance | ±15%, ±20% at LLOQ | ±20%, ±25% at LLOQ and ULOQ |\n| Accuracy \u002F precision | ±15% \u002F ≤15% CV (±20% \u002F ≤20% at LLOQ) | ±20% \u002F ≤20% CV (±25% \u002F ≤25% at LLOQ and ULOQ) |\n| A&P design | 4 QC levels, 5 replicates\u002Frun, ≥3 runs over ≥2 days | 5 QC levels, 3 replicates\u002Frun, ≥6 runs over ≥2 days |\n| Total error | no such criterion | ≤30%, ≤40% at LLOQ and ULOQ |\n| ISR agreement | ±20% for ≥2\u002F3 of repeats | ±30% for ≥2\u002F3 of repeats |\n\nApplying the ±15% chromatographic numbers to a ligand binding assay, or importing the LBA total-error\ncriterion into a chromatographic method, are both common and both wrong.\n\nThe run check enforces the per-level rule that gets missed: at least 2\u002F3 of *all* QCs **and** at\nleast 50% at *each* level. A run can pass the overall fraction while a single level fails\ncompletely.\n\n```\nfinding: QC level high: 0\u002F2 within tolerance (0%); M10 requires at least 50% at each level\n```\n\n### 7. Transfer and method comparison\n\n```bash\npython3 compare_methods.py -i paired.csv --margin 2 --relative --slope-tolerance 0.05\n```\n\n```\nmean difference (%)                       1.4646\nTOST margin                               2.0000\nTOST p-value                              1.0528e-13\n90% CI (TOST)                             1.44127 to 1.48797\nequivalent at stated margin               yes\n--- for contrast only ---\npaired t-test p (NOT equivalence)         0.0000\nOLS slope (biased here)                   1.0396\nDeming slope                              1.0398\nPassing-Bablok slope                      1.0351\n```\n\nTwo errors this replaces:\n\n- **\"p > 0.05, no significant difference, therefore the methods are equivalent.\"** Failing to\n  detect a difference is not evidence of equivalence, and on a small transfer dataset that outcome\n  is close to guaranteed. TOST tests the hypothesis that matters — that the true difference lies\n  inside a pre-stated margin. Here the t test says the difference is highly significant *and* TOST\n  says the methods are equivalent at ±2%; both are true, and only one answers the question.\n- **Ordinary least squares for method comparison.** OLS assumes the reference values carry no\n  error, which is false when comparing two procedures, and biases the slope toward zero. Deming\n  (with a stated error-variance ratio) and Passing–Bablok (non-parametric, outlier-resistant) are\n  the appropriate regressions and are reported side by side with OLS for contrast.\n\nThe script also flags proportional bias — when the difference trends with concentration, a single\nmean bias and its limits of agreement are misleading regardless of how tight they look.\n\n## What this skill exists to prevent\n\n1. Validating against ICH Q2(R1)'s structure three years after Q2(R2) replaced it.\n2. Acceptance criteria written after the data were seen.\n3. r² presented as evidence of linearity.\n4. Repeatability reported as the procedure's precision, with the between-day component invisible.\n5. One DL\u002FQL number with no named approach and no confirmation.\n6. Chromatographic M10 criteria applied to a ligand binding assay, or the reverse.\n7. A t test's non-significance presented as equivalence at a method transfer.\n\n## References\n\n- `references\u002Fframework-selection.md` — which framework governs, and the questions that decide it\n- `references\u002Fich-q2r2.md` — structure, Table 1 and Table 2, per-characteristic recommended data\n- `references\u002Fich-m10-bioanalytical.md` — the full chromatographic and LBA criteria side by side\n- `references\u002Fcompendial-and-clsi.md` — USP, CLSI and ISO designations, scope, and how to cite them\n- `references\u002Fstatistics.md` — the statistical methods, why each one, and the common errors\n- `references\u002Fsource-ledger.md` — provenance and research dates for every claim in this skill\n\n## Assets\n\n- `assets\u002Fvalidation-protocol-template.md` — protocol structure with criteria stated up front\n- `assets\u002Fvalidation-report-template.md` — report structure with raw-data traceability\n\n## Related skills\n\n- `iso-standards-readiness`: Prepares and structurally reviews readiness evidence for ISO management-system and laboratory-competence standards - ISO 13485 medical devi…\n",{"name":5,"license":15,"metadata":44,"description":7,"allowed-tools":50,"compatibility":51},{"tags":45,"version":46,"category":47,"maintainer":48,"last-reviewed":49},"method validation, ICH Q2, bioanalysis, analytical chemistry, quality control","1.1","ideation-and-design","Kalaris Labs","2026-07-27","Read Write Edit Bash","Requires Python 3.11+. Scripts use only the standard library - no numpy, scipy, or network access. Statistical distributions are computed from first principles so results are reproducible in any conforming interpreter.","main","0da4485785ee599388900be50db1635489d53056",".agents\u002Fskills\u002Fkal-analytical-method-validation","https:\u002F\u002Fgithub.com\u002FTashima-Tarsh\u002FDisha6.6","https:\u002F\u002Fdisha6.6.thenitishkr.in\u002F","https:\u002F\u002Fgithub.com\u002FTashima-Tarsh","www.thenitishkr","thenitishkr | AI • Cyber-security • Research\r\n","2026-11-08 03:33:25",{"source":8,"skillName":5,"commands":62,"prompt":72,"zipAvailable":73},[63,66,69],{"tool":64,"command":65},"npx","npx skills add Tashima-Tarsh\u002FDisha6.6 --skill analytical-method-validation",{"tool":67,"command":68},"bunx","bunx skills add Tashima-Tarsh\u002FDisha6.6 --skill analytical-method-validation",{"tool":70,"command":71},"pnpm","pnpm dlx skills add Tashima-Tarsh\u002FDisha6.6 --skill analytical-method-validation","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FTashima-Tarsh\u002FDisha6.6\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fkal-analytical-method-validation\u002FSKILL.md",true,[75,81,85,91,95,99,103,107,111,117,121,125,129,133,137,141],{"path":76,"resourceType":77,"resourceTypeDesc":78,"sizeBytes":79,"sourceHtmlUrl":80},"assets\u002Fvalidation-protocol-template.md","ASSET","资产文件",4021,"https:\u002F\u002Fgithub.com\u002FTashima-Tarsh\u002FDisha6.6\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fkal-analytical-method-validation\u002Fassets\u002Fvalidation-protocol-template.md",{"path":82,"resourceType":77,"resourceTypeDesc":78,"sizeBytes":83,"sourceHtmlUrl":84},"assets\u002Fvalidation-report-template.md",3945,"https:\u002F\u002Fgithub.com\u002FTashima-Tarsh\u002FDisha6.6\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fkal-analytical-method-validation\u002Fassets\u002Fvalidation-report-template.md",{"path":86,"resourceType":87,"resourceTypeDesc":88,"sizeBytes":89,"sourceHtmlUrl":90},"references\u002Fcompendial-and-clsi.md","REFERENCE","参考文档",7442,"https:\u002F\u002Fgithub.com\u002FTashima-Tarsh\u002FDisha6.6\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fkal-analytical-method-validation\u002Freferences\u002Fcompendial-and-clsi.md",{"path":92,"resourceType":87,"resourceTypeDesc":88,"sizeBytes":93,"sourceHtmlUrl":94},"references\u002Fframework-selection.md",5250,"https:\u002F\u002Fgithub.com\u002FTashima-Tarsh\u002FDisha6.6\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fkal-analytical-method-validation\u002Freferences\u002Fframework-selection.md",{"path":96,"resourceType":87,"resourceTypeDesc":88,"sizeBytes":97,"sourceHtmlUrl":98},"references\u002Fich-m10-bioanalytical.md",7324,"https:\u002F\u002Fgithub.com\u002FTashima-Tarsh\u002FDisha6.6\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fkal-analytical-method-validation\u002Freferences\u002Fich-m10-bioanalytical.md",{"path":100,"resourceType":87,"resourceTypeDesc":88,"sizeBytes":101,"sourceHtmlUrl":102},"references\u002Fich-q2r2.md",13596,"https:\u002F\u002Fgithub.com\u002FTashima-Tarsh\u002FDisha6.6\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fkal-analytical-method-validation\u002Freferences\u002Fich-q2r2.md",{"path":104,"resourceType":87,"resourceTypeDesc":88,"sizeBytes":105,"sourceHtmlUrl":106},"references\u002Fsource-ledger.md",7888,"https:\u002F\u002Fgithub.com\u002FTashima-Tarsh\u002FDisha6.6\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fkal-analytical-method-validation\u002Freferences\u002Fsource-ledger.md",{"path":108,"resourceType":87,"resourceTypeDesc":88,"sizeBytes":109,"sourceHtmlUrl":110},"references\u002Fstatistics.md",11370,"https:\u002F\u002Fgithub.com\u002FTashima-Tarsh\u002FDisha6.6\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fkal-analytical-method-validation\u002Freferences\u002Fstatistics.md",{"path":112,"resourceType":113,"resourceTypeDesc":114,"sizeBytes":115,"sourceHtmlUrl":116},"scripts\u002F_catalog.py","SCRIPT","脚本",23838,"https:\u002F\u002Fgithub.com\u002FTashima-Tarsh\u002FDisha6.6\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fkal-analytical-method-validation\u002Fscripts\u002F_catalog.py",{"path":118,"resourceType":113,"resourceTypeDesc":114,"sizeBytes":119,"sourceHtmlUrl":120},"scripts\u002F_common.py",32705,"https:\u002F\u002Fgithub.com\u002FTashima-Tarsh\u002FDisha6.6\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fkal-analytical-method-validation\u002Fscripts\u002F_common.py",{"path":122,"resourceType":113,"resourceTypeDesc":114,"sizeBytes":123,"sourceHtmlUrl":124},"scripts\u002Fcheck_accuracy_precision.py",14263,"https:\u002F\u002Fgithub.com\u002FTashima-Tarsh\u002FDisha6.6\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fkal-analytical-method-validation\u002Fscripts\u002Fcheck_accuracy_precision.py",{"path":126,"resourceType":113,"resourceTypeDesc":114,"sizeBytes":127,"sourceHtmlUrl":128},"scripts\u002Fcheck_bioanalytical_run.py",11344,"https:\u002F\u002Fgithub.com\u002FTashima-Tarsh\u002FDisha6.6\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fkal-analytical-method-validation\u002Fscripts\u002Fcheck_bioanalytical_run.py",{"path":130,"resourceType":113,"resourceTypeDesc":114,"sizeBytes":131,"sourceHtmlUrl":132},"scripts\u002Fcheck_detection_limits.py",13215,"https:\u002F\u002Fgithub.com\u002FTashima-Tarsh\u002FDisha6.6\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fkal-analytical-method-validation\u002Fscripts\u002Fcheck_detection_limits.py",{"path":134,"resourceType":113,"resourceTypeDesc":114,"sizeBytes":135,"sourceHtmlUrl":136},"scripts\u002Fcheck_response.py",9858,"https:\u002F\u002Fgithub.com\u002FTashima-Tarsh\u002FDisha6.6\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fkal-analytical-method-validation\u002Fscripts\u002Fcheck_response.py",{"path":138,"resourceType":113,"resourceTypeDesc":114,"sizeBytes":139,"sourceHtmlUrl":140},"scripts\u002Fcompare_methods.py",9105,"https:\u002F\u002Fgithub.com\u002FTashima-Tarsh\u002FDisha6.6\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fkal-analytical-method-validation\u002Fscripts\u002Fcompare_methods.py",{"path":142,"resourceType":113,"resourceTypeDesc":114,"sizeBytes":143,"sourceHtmlUrl":144},"scripts\u002Fplan_validation.py",15414,"https:\u002F\u002Fgithub.com\u002FTashima-Tarsh\u002FDisha6.6\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fkal-analytical-method-validation\u002Fscripts\u002Fplan_validation.py",[146,178,201,228,252,275],{"skillNo":147,"name":148,"nameZh":6,"description":149,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":150,"categories":151,"keywords":157,"publishedAt":39},"01M6QRD07D4TGNDK6VJ4EHF8BV","youtube-full","Use when the user needs YouTube transcripts, video search, channel browsing, playlist extraction, or content monitoring. Trigger phrases: 'get the transcript for', 'search YouTube for', 'what are the latest videos on', 'list this playlist', 'monitor this channel', or any request involving a YouTube URL, video ID, or @handle. Do NOT use for downloading video or audio files, YouTube engagement data (likes, comments), or private\u002Fage-restricted videos.","https:\u002F\u002Fgithub.com\u002FTashima-Tarsh\u002FDisha6.6\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fyoutube-full\u002FSKILL.md",[152],{"categoryNo":153,"categoryName":154,"taxonomyType":155,"taxonomyTypeDesc":156},"01JBSEEDCAT000000000000016","图像与多媒体","SCENARIO","使用场景",[158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177],"youtube full","youtube","full","transcript","search","monitoring","data","Video","Audio","list","files","do","get","age","trigger","URL","for","browsing","request","youtube transcripts",{"skillNo":179,"name":180,"nameZh":6,"description":181,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":182,"categories":183,"keywords":184,"publishedAt":39},"01M6QRCJ3112VYPA97YG7KGMC2","x-twitter-growth","X\u002FTwitter growth engine for building audience, crafting viral content, and analyzing engagement. Use when the user wants to grow on X\u002FTwitter, write tweets or threads, analyze their X profile, research competitors on X, plan a posting strategy, or optimize engagement. Complements social-content (generic multi-platform) with X-specific depth: algorithm mechanics, thread engineering, reply strategy, profile optimization, and competitive intelligence via web search.","https:\u002F\u002Fgithub.com\u002FTashima-Tarsh\u002FDisha6.6\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fx-twitter-growth\u002FSKILL.md",[],[185,186,187,188,162,189,190,34,191,192,193,194,22,195,196,197,198,199,200,174],"twitter","x twitter growth","growth","research","content","engineering","web search","competitors","analyze","engine","strategy","use","platform","grow","posting","competitive",{"skillNo":202,"name":203,"nameZh":6,"description":204,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":205,"categories":206,"keywords":210,"publishedAt":39},"01M6QRBN3EHQNJY42RERP7A149","write-a-skill","Create new agent skills with proper structure, progressive disclosure, and bundled resources. Use when user wants to create, write, build, or author a new skill.","https:\u002F\u002Fgithub.com\u002FTashima-Tarsh\u002FDisha6.6\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fwrite-a-skill\u002FSKILL.md",[207],{"categoryNo":208,"categoryName":209,"taxonomyType":155,"taxonomyTypeDesc":156},"01JBSEEDCAT000000000000023","Skill与智能体开发",[211,22,212,213,214,215,216,217,196,218,219,52,220,221,222,223,224,225,226,227],"write a skill","github","create","https","productivity","matt pocock","direct","example","build","new skill","structure","new agent","resources","with","tree","progressive disclosure","author",{"skillNo":229,"name":230,"nameZh":6,"description":231,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":232,"categories":233,"keywords":234,"publishedAt":39},"01M6QRB6G8P33PNGAF9Y69EJ9T","wrap-up","Close out a launched Claude Managed Agent — recap every primitive the founder now owns, regenerate the single-file overview page, and suggest the next 1-2 upgrades. Use when the user says \"wrap up\", \"close this out\", \"what do I own now\", \"give me the summary\", \"recap the agent\", or when the orchestrator routes phase=wrap-up. primitives_inventory.py tables everything owned (agent, environment, session, memory, outcome, deployment); overview_page.py regenerates a self-contained .\u002Fmy-agent\u002Fagent-overview.html; upgrade_suggester.py ranks the next moves from recorded deferrals plus standing hardening steps. Companion to run-without-you; the last stop before phase=done.","https:\u002F\u002Fgithub.com\u002FTashima-Tarsh\u002FDisha6.6\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fwrap-up\u002FSKILL.md",[],[235,236,237,238,239,37,240,241,242,196,243,169,244,245,246,247,248,249,250,251],"wrap up","up","wrap","gemini","deployment","file","hardening","closeout","stop","upgrade","founder","close","companion","you","tables","directions","phase",{"skillNo":253,"name":254,"nameZh":6,"description":255,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":256,"categories":257,"keywords":259,"publishedAt":39},"01M6QRA5AYC1RBFZ39GTWGS3N8","workflow-builder","Design and write deterministic multi-agent workflow scripts (.js files in .claude\u002Fworkflows\u002F) for Claude Code's Workflow tool. Use when a user wants to build, create, author, scaffold, or run a custom Claude Code workflow, orchestrate sub-agents (fan-out, pipeline, loop, judge-panel), or automate a repeatable multi-step task across fresh-context agents.","https:\u002F\u002Fgithub.com\u002FTashima-Tarsh\u002FDisha6.6\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fworkflow-builder\u002FSKILL.md",[258],{"categoryNo":208,"categoryName":209,"taxonomyType":155,"taxonomyTypeDesc":156},[260,261,262,30,263,213,37,264,265,266,267,268,22,269,168,270,271,272,273,274],"workflow","workflow builder","builder","workflows","code","orchestrate","pipeline","loop","multi-agent","context","across","fresh","scripts","judge","claude code workflow",{"skillNo":276,"name":277,"nameZh":6,"description":278,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":279,"categories":280,"keywords":281,"publishedAt":39},"01M6QR7QMCZESKQA0ERW1E657M","weekly-review","Use when someone wants to run a weekly review, close open loops, audit stalled projects and commitments, get their system back to trusted, restart a lapsed review habit, or says \"\u002Fcs:weekly-review\". Walks David Allen's three-phase loop — GET CLEAR, GET CURRENT, GET CREATIVE — with deterministic scripts that inventory open loops, gate the checklist with named gaps, and score commitment health 0-100.","https:\u002F\u002Fgithub.com\u002FTashima-Tarsh\u002FDisha6.6\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fweekly-review\u002FSKILL.md",[],[282,283,284,285,286,287,288,289,290,267,291,292,293,294,295,296,170,297,298,251],"review","weekly review","weekly","deterministic scripts","reflect","feeds","inventory","open","team","projects","project-management","scanner","conversation","back","project","sprint","cadence"]