Skip to content

v0.2.7 — Align skill docs with server 365-day member --days cap

Latest

Choose a tag to compare

@Delibread0601 Delibread0601 released this 27 Apr 12:19

What's Changed since v0.2.6

Member tier --days cap is 365, not unlimited

The PodLens server caps member tier --days at 365 days (was previously documented in askaipods as "unlimited" / "any value"). Passing --days 730 to a member-tier query is silently clamped to 365 by the server. v0.2.7 aligns askaipods's user-facing copy with that contract:

  • CLI --help text now reads anonymous tier caps at 90; member tier caps at 365 instead of anonymous tier caps at 90; member tier accepts any value.
  • README's tier-comparison table reads 90 days | 365 days for the --days cap row (was 90 days | Unlimited).
  • The agent skill spec (skill/askaipods/SKILL.md) reads --days lookback up to 365 days (omit --days for all-time results) in the frontmatter requirements and the closing anonymous-tier note. The agent guidance also tells the agent to pass the cap value rather than a larger number when the user's intent ("last 2 years", "since 2024") would exceed the cap, and to disclose the clamp in its response.
  • The CLI's anonymous-tier markdown footer (format.js ANONYMOUS_NOTE) was updated to match: --days up to 365 (or omit for all-time).

meta.restrictions for member tier is {max_days: 365}, not null

The server now returns a member-tier meta.restrictions object ({max_days: 365}) rather than the historical null. The skill spec's field description and JSON shape example were corrected. The skill's success-envelope validator already accepted both shapes, so this is a documentation fix only — no runtime behavior change in the CLI.

Skill spec hardening (agent-facing only)

  • Empty-result error-handling priority ladder and freshness-banner rules now use optional chaining (meta.warning?.code, meta.window?.truncated, meta.window?.expanded) so an agent codifying the ladder doesn't throw when the server omits an optional field. Added a leading sentence naming the nullable fields and pointing at the step-6 fallback.
  • The dual-view render template ("🆕 Latest 5" / "🎯 Top 5 Most Relevant") tells the agent to render up to 5; when fewer results return (the server may return window.reason_code: "expanded_partial_fill" or fire a freshness warning), drop the "5" from the heading and never pad or fabricate.
  • The "expanded === true && results empty" branch is now qualified with window.truncated !== true. When truncated === true, expansion was aborted mid-way by a transient Vectorize error rather than running the full window plan, so the agent should tell the user to retry rather than rephrase.
  • The shell-string fallback example replaced the "<USER QUERY>" placeholder with <SHELL_QUOTED_QUERY> plus a printf %q worked example, since the prior placeholder could be misread as "wrap the query in double quotes" — which is not safe ($VAR and backticks still expand inside double quotes). The argv-array form (the preferred path) is unchanged.
  • The JSON shape example is now labeled as a member-tier response, with anonymous-tier differences enumerated above the example. The example uses concrete tier: "member" / render_hint: "dual_view" values rather than union syntax.
  • The api_rank field description clarifies tier-specific semantics: for member tier, api_rank 1 = most semantically relevant; for anonymous tier, api_rank reflects temporal order (1 = newest).
  • The "Output exactly this structure" preamble notes that parenthetical render notes and <placeholder> tokens inside the fenced templates are author guidance — agents must replace placeholders with values from the JSON response and must not include the parentheticals in the user-facing output.
  • The closing anonymous-tier template's "20 results" was changed to "up to 20 results" for consistency.

Honest limitations (unchanged from v0.2.6)

  • No speaker attribution in the API response.
  • No episode URLs in the API response.
  • AI-focused corpus.
  • Short quote excerpts, not full transcripts.

Deferred to v0.2.8+

  • .github/workflows/auto-tag.yml has a single-commit assumption that fails when the package.json version bump and the body of the release land in two separate commits — the workflow compares HEAD to HEAD~1, which sees no version change after a checkpoint+final commit pair. v0.2.7 was tagged manually; a future release should switch the workflow to comparing across the entire push range (github.event.beforegithub.event.after).
  • The JSON shape example timestamp next_reset: "2026-04-21T00:00:00Z" is illustrative and now in the past — refresh in a future doc-polish pass.

Changed Files

README.md, package.json, skill/askaipods/SKILL.md, src/cli.js, src/client.js, src/format.js. No production logic changed beyond the version-string bump and the format.js ANONYMOUS_NOTE wording — the rest is documentation, agent guidance, and --help text.

Full Changelog: v0.2.6...v0.2.7