- Home
- Skills
- Technical Documentation
- Source of Truth Query
More screenshots
Works with the AI Agents you already use
Source of Truth Query
For any question about a project that has a knowledge base: short answers cited from it and from the source files. Works with Source of Truth and Source of Truth (Lite).
Free
Source of Truth Query
Example session with this skill installed
Look it up in our knowledge base: what happens if a token's timestamp is in the future?
- Read your context and instructions
- Compiled the source of truth
If the token's signature is valid and you passed max_age, it's rejected with SignatureExpired and the message "Signature age -N < 0 seconds". If you didn't pass max_age, it's accepted, because the age check only runs when max_age is given.
The check, step by step
- The signature is verified first. The timestamp is protected by the signature, so nobody can change it without the key (architecture.md → Principles; Invariants #3).
- If
max_ageis set, age is the current time minus the token's timestamp, both in whole seconds.age > max_ageraisesSignatureExpired, and so doesage < 0(architecture.md → Load flow, step 6). TimedSerializer.loadsletsSignatureExpiredthrough right away and doesn't try the fallback signers (architecture.md → Invariants #4).- The exception's
date_signedis always set to a UTCdatetime(architecture.md → Exceptions).
Why it works this way: the 2.0.0 changelog says a token with a negative age would otherwise "appear valid", which "can happen if the timestamp offset is changed" (decisions.md → #15).
Things to know
Clock skew: if the server that signs the token has a clock ahead of the server that checks it, fresh tokens can fail with age < 0. The KB marks this as inferred from the code (architecture.md → Gotchas).
Huge future timestamps: if the signature fails, a timestamp too large to convert becomes BadTimeSignature("Malformed timestamp"). If the signature is valid, the conversion isn't guarded, so a raw ValueError, OSError or OverflowError gets through. The KB rates this Low, since only someone with the real key can make such a token (architecture.md → Gotchas; open-questions.md → Risks).
I checked this against the code: src/itsdangerous/timed.py → TimestampSigner.unsign has the age < 0 check inside if max_age is not None. The test tests/test_itsdangerous/test_timed.py → test_future_age covers it.
Sources: architecture.md → Load flow, Exceptions, Invariants, Gotchas · decisions.md → #15 · open-questions.md → Risks · src/itsdangerous/timed.py → TimestampSigner.unsign
Connects securely to your tools. The creator never sees your data.
About this skill
Source of Truth Query answers questions about a project from its knowledge base: how something works, where it lives, why a decision was made, what a term means, or what to change for a task. It routes each question to the few documents that cover it, answers in plain words, and cites what it used.
Example (a fictional project)
Where are deleted notes purged?
The knowledge base does not say; the code purges them in the nightly cleanup job.
Sources: src/notes/cleanup → purge_deleted KB gap: not covered by the knowledge base (offer to record it).
Needs
A knowledge base built by Source of Truth or Source of Truth (Lite), by default in
knowledge-base/ at the project root. No knowledge base yet? Source of Truth (Lite)
builds one for free.
Writes
Nothing, except a row in open-questions.md when you agree to record a gap.
How to use
Skills on Agensi run inside your AI agent. Copy the prompt, paste it into your agent, and it connects to Agensi and installs this skill for you. If a payment is needed, your agent shows it to you first.
Reviews
2 people have installed this skill.
Trust & safety
Security scanned
Verified clean 5 days ago
- Free to download with an account