← AI EnduranceCONTENT HISTORY

Update to AI Endurance

Snapshot Oct 5, 2026 · 18:06 UTC · version 2.0.0

WHAT CHANGED · RULE-BASED ANALYSIS

Package or technical metadata updated

Package contents changed in 17 files: .codex-plugin/plugin.json, skills/adjust-for-weather/SKILL.md, skills/adjust-for-weather/agents/openai.yaml, …. Open the file diff to inspect the edits.

Observed in package metadata. These changes alone do not establish a new customer-facing feature.

Package file

Before

d4c407c7cb92b868d75f6e9857f1a6df59684fb4e5d7c9e43181b36a0aaad4a3

After

ea0cd15b8d666982c546a15a8465f290742d59cfa637a5f9c01d92f127370823

Package file

Before

1500

After

1572

Package file

Before

Not present

After

{"sha256":"25ef952e1f46b98ef4b43506d000f5870497a28b68b023dab780f61639bc095f","size":2056}

Package file

Before

Not present

After

{"sha256":"dc53a6e2bb6797c7d78bdc1b099c01fcf2a208e2e156831b726bab74604838a4","size":641}

Compare saved observations

Download comparison JSON

skills/checkin/SKILL.md

--- before
+++ after
@@ -0,0 +1,17 @@
+---
+name: checkin
+description: Daily check-in and readiness review. Use when the user wants their daily check-in, morning check-in, asks how they should train today, whether they are recovered or ready for their workout, or whether to train given how they feel. Do not use for analyzing a completed workout (use analyze-activity), for restructuring the upcoming week (use replan), or for weather-based adjustments (use adjust-for-weather).
+---
+
+Run a daily readiness check-in and advise the user on today's training.
+
+1. If the user has not already described how they feel, ask briefly: overall fatigue, muscle soreness, sleep quality, and anything notable (illness, stress, travel). Keep it to one short question, not a form.
+2. Call the `getRecoveryModel` tool to get objective recovery data: HRV, resting heart rate, and recovery scores from their synced wearable.
+3. Call the `getPlannedWorkouts` tool for today's date to see what training is planned.
+4. Weigh the subjective answers against the objective recovery data and today's plan, then give a clear recommendation: do the workout as planned, adjust it (lower intensity, shorter duration), swap it to another day, or rest. Explain the reasoning in two or three sentences, referencing the specific signals that drove the call.
+5. If the recommendation is an adjustment and the user agrees, apply it: use `changeWorkoutAdvice` to attach the adjusted guidance to today's workout, `changeWorkoutDate` to move it, or `skipWorkout` to skip it. Always confirm with the user before modifying their plan.
+
+Notes:
+
+- This check-in is advisory only. The user's answers here are not saved to their AI Endurance recovery model; the daily check-in form in the AI Endurance app is where check-in data is recorded. If the user wants their subjective data tracked over time, point them to the app's check-in.
+- If `getRecoveryModel` returns no recent data (no wearable synced), base the advice on the subjective answers and today's plan alone, and say that objective recovery data was unavailable.
Full technical diff · 18 changed fields

changed /files/.codex-plugin~1plugin.json/sha256

BEFORE
"d4c407c7cb92b868d75f6e9857f1a6df59684fb4e5d7c9e43181b36a0aaad4a3"
AFTER
"ea0cd15b8d666982c546a15a8465f290742d59cfa637a5f9c01d92f127370823"

changed /files/.codex-plugin~1plugin.json/size

BEFORE
1500
AFTER
1572

added /files/skills~1adjust-for-weather~1SKILL.md

BEFORE
Field was absent
AFTER
{
  "sha256": "25ef952e1f46b98ef4b43506d000f5870497a28b68b023dab780f61639bc095f",
  "size": 2056
}

added /files/skills~1adjust-for-weather~1agents~1openai.yaml

BEFORE
Field was absent
AFTER
{
  "sha256": "dc53a6e2bb6797c7d78bdc1b099c01fcf2a208e2e156831b726bab74604838a4",
  "size": 641
}

added /files/skills~1adjust-for-weather~1assets~1icon-large.png

BEFORE
Field was absent
AFTER
{
  "sha256": "0d5114eeadbd9b0f27a3a57289021c7473c1b87458d0fe7c55632c18994db1ff",
  "size": 17034
}

added /files/skills~1adjust-for-weather~1assets~1icon-small.png

BEFORE
Field was absent
AFTER
{
  "sha256": "dd06bd84dd3c72c23c177d13b46c3bd68eb6e0a4713e55fcacb2d7f77afd1296",
  "size": 2013
}

added /files/skills~1analyze-activity~1SKILL.md

BEFORE
Field was absent
AFTER
{
  "sha256": "8d4f4e845d87ee52fa0ec35d6b6415dad79325794239a80e2cf2a9d5c24f40a8",
  "size": 2845
}

added /files/skills~1analyze-activity~1agents~1openai.yaml

BEFORE
Field was absent
AFTER
{
  "sha256": "ac3b00235d50e0814b2d52863c63dfc4762d1fef951508293c9de9dca32879d3",
  "size": 625
}

added /files/skills~1analyze-activity~1assets~1icon-large.png

BEFORE
Field was absent
AFTER
{
  "sha256": "0d5114eeadbd9b0f27a3a57289021c7473c1b87458d0fe7c55632c18994db1ff",
  "size": 17034
}

added /files/skills~1analyze-activity~1assets~1icon-small.png

BEFORE
Field was absent
AFTER
{
  "sha256": "dd06bd84dd3c72c23c177d13b46c3bd68eb6e0a4713e55fcacb2d7f77afd1296",
  "size": 2013
}

added /files/skills~1checkin~1SKILL.md

BEFORE
Field was absent
AFTER
{
  "sha256": "3c8c064db65c6e3e2be527254a4344ac29e288dbb6867ef401241f33f0e019fd",
  "size": 2041
}

added /files/skills~1checkin~1agents~1openai.yaml

BEFORE
Field was absent
AFTER
{
  "sha256": "6682ee2e17877bf2596046f07052200c9e6ef34eb29a52871ae65e9cfc985328",
  "size": 689
}

added /files/skills~1checkin~1assets~1icon-large.png

BEFORE
Field was absent
AFTER
{
  "sha256": "0d5114eeadbd9b0f27a3a57289021c7473c1b87458d0fe7c55632c18994db1ff",
  "size": 17034
}

added /files/skills~1checkin~1assets~1icon-small.png

BEFORE
Field was absent
AFTER
{
  "sha256": "dd06bd84dd3c72c23c177d13b46c3bd68eb6e0a4713e55fcacb2d7f77afd1296",
  "size": 2013
}

added /files/skills~1replan~1SKILL.md

BEFORE
Field was absent
AFTER
{
  "sha256": "d70e6723e09147193210124901a071bee73e2b049d94de257e7843d83477b474",
  "size": 1810
}

added /files/skills~1replan~1agents~1openai.yaml

BEFORE
Field was absent
AFTER
{
  "sha256": "d3733f8688d5f225603383dc4f6a486cc0b72bec205f61a69225eac6b763587d",
  "size": 686
}

added /files/skills~1replan~1assets~1icon-large.png

BEFORE
Field was absent
AFTER
{
  "sha256": "0d5114eeadbd9b0f27a3a57289021c7473c1b87458d0fe7c55632c18994db1ff",
  "size": 17034
}

added /files/skills~1replan~1assets~1icon-small.png

BEFORE
Field was absent
AFTER
{
  "sha256": "dd06bd84dd3c72c23c177d13b46c3bd68eb6e0a4713e55fcacb2d7f77afd1296",
  "size": 2013
}
Full snapshot data
{
  "files": {
    ".app.json": {
      "sha256": "efc08a750353795d8813bbf26b175aab45142ed65e81acdb97e61e0f78059351",
      "size": 127
    },
    ".codex-plugin/plugin.json": {
      "sha256": "ea0cd15b8d666982c546a15a8465f290742d59cfa637a5f9c01d92f127370823",
      "size": 1572
    },
    "skills/adjust-for-weather/SKILL.md": {
      "sha256": "25ef952e1f46b98ef4b43506d000f5870497a28b68b023dab780f61639bc095f",
      "size": 2056
    },
    "skills/adjust-for-weather/agents/openai.yaml": {
      "sha256": "dc53a6e2bb6797c7d78bdc1b099c01fcf2a208e2e156831b726bab74604838a4",
      "size": 641
    },
    "skills/adjust-for-weather/assets/icon-large.png": {
      "sha256": "0d5114eeadbd9b0f27a3a57289021c7473c1b87458d0fe7c55632c18994db1ff",
      "size": 17034
    },
    "skills/adjust-for-weather/assets/icon-small.png": {
      "sha256": "dd06bd84dd3c72c23c177d13b46c3bd68eb6e0a4713e55fcacb2d7f77afd1296",
      "size": 2013
    },
    "skills/analyze-activity/SKILL.md": {
      "sha256": "8d4f4e845d87ee52fa0ec35d6b6415dad79325794239a80e2cf2a9d5c24f40a8",
      "size": 2845
    },
    "skills/analyze-activity/agents/openai.yaml": {
      "sha256": "ac3b00235d50e0814b2d52863c63dfc4762d1fef951508293c9de9dca32879d3",
      "size": 625
    },
    "skills/analyze-activity/assets/icon-large.png": {
      "sha256": "0d5114eeadbd9b0f27a3a57289021c7473c1b87458d0fe7c55632c18994db1ff",
      "size": 17034
    },
    "skills/analyze-activity/assets/icon-small.png": {
      "sha256": "dd06bd84dd3c72c23c177d13b46c3bd68eb6e0a4713e55fcacb2d7f77afd1296",
      "size": 2013
    },
    "skills/checkin/SKILL.md": {
      "sha256": "3c8c064db65c6e3e2be527254a4344ac29e288dbb6867ef401241f33f0e019fd",
      "size": 2041
    },
    "skills/checkin/agents/openai.yaml": {
      "sha256": "6682ee2e17877bf2596046f07052200c9e6ef34eb29a52871ae65e9cfc985328",
      "size": 689
    },
    "skills/checkin/assets/icon-large.png": {
      "sha256": "0d5114eeadbd9b0f27a3a57289021c7473c1b87458d0fe7c55632c18994db1ff",
      "size": 17034
    },
    "skills/checkin/assets/icon-small.png": {
      "sha256": "dd06bd84dd3c72c23c177d13b46c3bd68eb6e0a4713e55fcacb2d7f77afd1296",
      "size": 2013
    },
    "skills/replan/SKILL.md": {
      "sha256": "d70e6723e09147193210124901a071bee73e2b049d94de257e7843d83477b474",
      "size": 1810
    },
    "skills/replan/agents/openai.yaml": {
      "sha256": "d3733f8688d5f225603383dc4f6a486cc0b72bec205f61a69225eac6b763587d",
      "size": 686
    },
    "skills/replan/assets/icon-large.png": {
      "sha256": "0d5114eeadbd9b0f27a3a57289021c7473c1b87458d0fe7c55632c18994db1ff",
      "size": 17034
    },
    "skills/replan/assets/icon-small.png": {
      "sha256": "dd06bd84dd3c72c23c177d13b46c3bd68eb6e0a4713e55fcacb2d7f77afd1296",
      "size": 2013
    }
  }
}

SHA-256 of public snapshot: 88fcb3745563569c7ea2bd09b127f2e9bf18039b472b3b33fd8cf2f3a6f73cf7