Conversation
…udes Agent-Logs-Url: https://github.com/GitHubSecurityLab/seclab-taskflow-agent/sessions/f7a21e1a-0976-4d99-9159-fa1625799827 Co-authored-by: p- <176818+p-@users.noreply.github.com>
Copilot
AI
changed the title
[WIP] Fix version numbers in README and documentation
Align README/GRAMMAR docs with current YAML versioning and Jinja templating syntax
Apr 15, 2026
Contributor
There was a problem hiding this comment.
Pull request overview
This PR updates documentation examples to match the repository’s current YAML header versioning and Jinja2 templating syntax used by the taskflow engine.
Changes:
- Update YAML header examples to use
version: "1.0"(string form) inREADME.mdanddoc/GRAMMAR.md. - Update repeat prompt variable example from
{{ RESULT }}to{{ result }}inREADME.md. - Replace legacy reusable prompt macro examples with Jinja
{% include '...' %}syntax inREADME.md.
Show a summary per file
| File | Description |
|---|---|
| doc/GRAMMAR.md | Updates example headers to use version: "1.0" consistently. |
| README.md | Aligns header guidance and examples with version: "1.0" and current Jinja2 template/include syntax. |
Copilot's findings
Tip
Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
- Files reviewed: 2/2 changed files
- Comments generated: 1
| Prompts are configured through YAML files of `filetype` `prompt`. They define a reusable prompt that can be referenced in `taskflow` files. | ||
|
|
||
| They contain only one field, the `prompt` field, which is used to replace any `{{ PROMPT_<import-path> }}` template parameter in a taskflow. For example, the following `prompt`. | ||
| They contain only one field, the `prompt` field. Reusable prompts can be referenced in tasks using Jinja2's `{% include '<import-path>' %}` directive. For example, the following `prompt`. |
There was a problem hiding this comment.
The text says prompt files "contain only one field" but the example (and the general header requirement above) shows a required seclab-taskflow-agent header plus the prompt key. Consider clarifying this as "only one additional top-level field besides the required header" to avoid confusing readers.
Suggested change
| They contain only one field, the `prompt` field. Reusable prompts can be referenced in tasks using Jinja2's `{% include '<import-path>' %}` directive. For example, the following `prompt`. | |
| Besides the required `seclab-taskflow-agent` header, they contain only one additional top-level field: `prompt`. Reusable prompts can be referenced in tasks using Jinja2's `{% include '<import-path>' %}` directive. For example, the following `prompt`. |
anticomputer
approved these changes
Apr 15, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Documentation examples were out of sync with the current grammar and migration guidance: several snippets still used
version: 1, legacy{{ RESULT }}, and legacy prompt macro syntax. This PR updates README and GRAMMAR examples to match the canonical runtime/documented syntax.Version header consistency (
"1.0"as string)README.mdanddoc/GRAMMAR.mdfromversion: 1toversion: "1.0"."1.0"as the current version and to specify string format as the expected representation.Repeat prompt variable syntax
{{ RESULT }}to{{ result }}.Reusable prompt inclusion syntax
{{ PROMPT... }}/{{ PROMPTS... }}wording and examples to Jinja include syntax:{% include '<import-path>' %}Example of the syntax normalization applied:
Warning
Firewall rules blocked me from connecting to one or more addresses (expand for details)
I tried to connect to the following addresses, but was blocked by firewall rules:
unsupported.example.com/usr/bin/python python -m pytest(dns block)If you need me to access, download, or install something from one of these locations, you can either:
Original prompt
The documentation in
README.mdanddoc/GRAMMAR.mdcontains several outdated references that are inconsistent with the current codebase (Pydantic models inmodels.py, template engine intemplate_utils.py, actual example YAML files, and the migration guide indoc/MIGRATION.md).Issues to fix
1. Version numbers should be strings
"1.0"— not bare integers1The Pydantic model in
src/seclab_taskflow_agent/models.pydefinesSUPPORTED_VERSION = "1.0". All actual YAML example files inexamples/already useversion: "1.0". The migration guide (doc/MIGRATION.md) explicitly says: "Update YAML version to"1.0"(string format, e.g.,version: "1.0")".In README.md, fix these YAML snippets that still show
version: 1(bare integer):version: 1→version: "1.0"version: 1→version: "1.0"version: 1→version: "1.0"version: 1→version: "1.0"version: 1→version: "1.0"Also fix the description text at lines ~293-297. It currently says:
This should be updated to say the version is
"1.0"and should be specified as a string. Something like:In doc/GRAMMAR.md, fix these YAML snippets:
version: 1→version: "1.0"version: 1→version: "1.0"version: 1→version: "1.0"version: 1→version: "1.0"2.
{{ RESULT }}is legacy syntax — should be{{ result }}(lowercase)In README.md line ~502, the taskflow example uses the old uppercase syntax:
What kind of fruit is {{ RESULT }}?This should be changed to:
What kind of fruit is {{ result }}?The current Jinja2 template engine (
template_utils.py) and all actual example YAML files use lowercase{{ result }}. The migration guide (doc/MIGRATION.md) explicitly documents this as old→new syntax.3.
{{ PROMPTS_... }}is legacy syntax — should be{% include '...' %}In README.md lines ~516-553, the "Prompts" section documents reusable prompts using the legacy
{{ PROMPTS_... }}/{{ PROMPT_... }}syntax. This entire section needs to be updated to use the current{% include '...' %}Jinja2 syntax, matching what GRAMMAR.md already documents correctly.Specifically:
{{ PROMPT_<import-path> }}to{% include '<import-path>' %}{{ PROMPT_examples.prompts.example_prompt }}to the correct reference{{ PROMPTS_examples.prompts.example_prompt }}to{% include 'examples.prompts.example_prompt' %}The updated section should match the style shown in
doc/GRAMMAR.mdlines 438-476 which already uses the correct{% include '...' %}syntax.The following is the prior conversation context from the user's chat exploration (may be truncated):
User: Compare the documentation in README.md and GRAMMAR.md. Find outdated information. Especially the versions. should now be represented as strings.
Assistant:
I'll start by loading the current contents of both files to compare them.
Assistant: Now let me check the actual Pydantic models to see how
versionis currently defined:Assistant: Now let me also check some of the example YAML files to see how version is actually used:
Assistant: Now I have a comprehensive picture. Let me also check the template variable naming for
RESULTvsresultmentioned in the README vs GRAMMAR:Assistant: Now I have a clear picture. Let me summarize my findings by also checking how
resultvsRESULTis used in the actual YAML examples and the template rendering code to confirm the discrepancies.Here's a comparison of the documentation in README.md and GRAMMAR.md, with the outdated information identified:
Outdated Information in README.md
1. Version numbers should be strings — README uses bare integers
The Pydantic model in [
models.py](https://github.com/GitHubSecurityLab/seclab-taskflow-agent/blob/c08ad8c5bac9fd13028dcd6b4296a5894f82cfc8/src/s...This pull request was created from Copilot chat.