Skip to content

feat: Series, buffer, stream, and performance coding agents#1722

Merged
DaveSkender merged 1 commit intov3from
003-coding-agents
Nov 3, 2025
Merged

feat: Series, buffer, stream, and performance coding agents#1722
DaveSkender merged 1 commit intov3from
003-coding-agents

Conversation

@DaveSkender
Copy link
Owner

Adds concise decision trees, usage guidance, and cross-references to instruction files to enable @Series, @buffer, @streamhub, and @performance Copilot agents.

…ts; update docs and tasks

- Add agent definitions:
  - .github/agents/indicator-series.agent.md
  - .github/agents/indicator-buffer.agent.md
  - .github/agents/indicator-stream.agent.md
  - .github/agents/performance.agent.md
- Update scoped instruction files to include agent discoverability sections:
  - .github/instructions/indicator-series.instructions.md
  - .github/instructions/indicator-buffer.instructions.md
  - .github/instructions/indicator-stream.instructions.md
- Register agents and examples in copilot guidance:
  - Update .github/copilot-instructions.md with new agent entries and usage examples
- Update project task/spec state:
  - .specify/specs/003-coding-agents/tasks.md updated to reflect validations and task completions
  - Remove obsolete spec: specs/003-create-3-custom/spec.md

Adds concise decision trees, usage guidance, and cross-references to instruction files to enable @Series, @buffer, @streamhub, and @performance Copilot agents.
@coderabbitai
Copy link
Contributor

coderabbitai bot commented Nov 3, 2025

📝 Walkthrough

Walkthrough

Four new custom agent markdown documentation files were added: indicator-buffer.agent.md, indicator-series.agent.md, performance.agent.md, and updates to indicator-stream.agent.md. Corresponding instruction files were updated with "When to use this agent" and "Related agents" sections. The .github/copilot-instructions.md was updated to include the @performance agent in the custom agents table with example usage prompts. Task tracking entries in .specify/specs/003-coding-agents/tasks.md were marked as completed across all phases. The feature specification document specs/003-create-3-custom/spec.md was deleted entirely.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (1)
.specify/specs/003-coding-agents/tasks.md (1)

1-6: Update header to reflect removal of spec.md from repository.

Line 5 lists spec.md as an input file, but per the AI summary, specs/003-create-3-custom/spec.md was deleted entirely in this PR. This creates a stale historical reference that may confuse future readers.

Options:

  1. Remove the reference to spec.md if it is no longer relevant
  2. Retain it with a note clarifying it was used during planning but has since been archived
  3. Update to reflect only current/live input sources

Consider aligning the header with the actual state of documentation in the repository.

📜 Review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between d8581a3 and 83e7b85.

📒 Files selected for processing (10)
  • .github/agents/indicator-buffer.agent.md (1 hunks)
  • .github/agents/indicator-series.agent.md (1 hunks)
  • .github/agents/indicator-stream.agent.md (6 hunks)
  • .github/agents/performance.agent.md (1 hunks)
  • .github/copilot-instructions.md (3 hunks)
  • .github/instructions/indicator-buffer.instructions.md (1 hunks)
  • .github/instructions/indicator-series.instructions.md (1 hunks)
  • .github/instructions/indicator-stream.instructions.md (1 hunks)
  • .specify/specs/003-coding-agents/tasks.md (6 hunks)
  • specs/003-create-3-custom/spec.md (0 hunks)
💤 Files with no reviewable changes (1)
  • specs/003-create-3-custom/spec.md
🧰 Additional context used
📓 Path-based instructions (1)
.specify/specs/**/*.md

⚙️ CodeRabbit configuration file

.specify/specs/**/*.md: These are ephemeral planning documents that track feature evolution and decision-making.
Unlike production documentation, specs/ files are permitted to:

  • Include historical context and references to past PRs (e.g., "Updated per PR #1496")
  • Use past-tense descriptions of changes and iterations
  • Reference previous tooling or earlier versions of features
  • Document the evolution of requirements and design decisions

Focus review on:

  • Adherance to Spec Kit conventions and .github\instructions\spec-kit.instructions.md
  • Technical accuracy of planned implementations
  • Consistency with repository architecture, constitution, and pre-existing instructions
  • Completeness of requirements and success criteria
  • Alignment between spec, plan, and task artifacts

Files:

  • .specify/specs/003-coding-agents/tasks.md
🧠 Learnings (30)
📓 Common learnings
Learnt from: CR
Repo: DaveSkender/Stock.Indicators PR: 0
File: .github/instructions/documentation.instructions.md:0-0
Timestamp: 2025-09-28T17:07:40.145Z
Learning: Applies to docs/_indicators/**/*.{md,markdown,html} : Add or update indicator documentation in the /docs/_indicators/ collection
Learnt from: CR
Repo: DaveSkender/Stock.Indicators PR: 0
File: .github/instructions/documentation.instructions.md:0-0
Timestamp: 2025-09-28T17:07:40.145Z
Learning: Applies to docs/_indicators/**/*.{md,markdown} : Keep indicator documentation current with library changes
Learnt from: CR
Repo: DaveSkender/Stock.Indicators PR: 0
File: .github/instructions/documentation.instructions.md:0-0
Timestamp: 2025-09-28T17:07:40.145Z
Learning: Applies to docs/_indicators/**/*.{md,markdown} : Update examples in indicator docs when API changes occur
📚 Learning: 2025-09-28T17:07:40.145Z
Learnt from: CR
Repo: DaveSkender/Stock.Indicators PR: 0
File: .github/instructions/documentation.instructions.md:0-0
Timestamp: 2025-09-28T17:07:40.145Z
Learning: Applies to docs/_indicators/**/*.{md,markdown} : Keep indicator documentation current with library changes

Applied to files:

  • .github/agents/indicator-buffer.agent.md
  • .github/agents/indicator-series.agent.md
  • .github/instructions/indicator-series.instructions.md
  • .github/agents/performance.agent.md
  • .github/agents/indicator-stream.agent.md
  • .github/instructions/indicator-stream.instructions.md
  • .github/instructions/indicator-buffer.instructions.md
  • .github/copilot-instructions.md
📚 Learning: 2025-10-13T16:57:01.555Z
Learnt from: CR
Repo: DaveSkender/Stock.Indicators PR: 0
File: tests/agents.md:0-0
Timestamp: 2025-10-13T16:57:01.555Z
Learning: Applies to tests/indicators/**/*BufferList*.Tests.cs : Buffer-style indicator tests must inherit from BufferListTestBase

Applied to files:

  • .github/agents/indicator-buffer.agent.md
  • .github/instructions/indicator-buffer.instructions.md
📚 Learning: 2025-09-28T17:07:40.145Z
Learnt from: CR
Repo: DaveSkender/Stock.Indicators PR: 0
File: .github/instructions/documentation.instructions.md:0-0
Timestamp: 2025-09-28T17:07:40.145Z
Learning: Applies to docs/_indicators/**/*.{md,markdown} : Update examples in indicator docs when API changes occur

Applied to files:

  • .github/agents/indicator-buffer.agent.md
  • .github/agents/indicator-series.agent.md
  • .github/instructions/indicator-series.instructions.md
  • .github/agents/indicator-stream.agent.md
  • .github/instructions/indicator-stream.instructions.md
  • .github/instructions/indicator-buffer.instructions.md
📚 Learning: 2025-09-28T17:07:40.145Z
Learnt from: CR
Repo: DaveSkender/Stock.Indicators PR: 0
File: .github/instructions/documentation.instructions.md:0-0
Timestamp: 2025-09-28T17:07:40.145Z
Learning: Applies to docs/_indicators/**/*.{md,markdown,html} : Add or update indicator documentation in the /docs/_indicators/ collection

Applied to files:

  • .github/agents/indicator-buffer.agent.md
  • .github/agents/indicator-series.agent.md
  • .github/instructions/indicator-series.instructions.md
  • .github/agents/indicator-stream.agent.md
  • .github/instructions/indicator-stream.instructions.md
  • .github/instructions/indicator-buffer.instructions.md
📚 Learning: 2025-10-13T16:55:59.321Z
Learnt from: CR
Repo: DaveSkender/Stock.Indicators PR: 0
File: .github/instructions/performance-testing.instructions.md:0-0
Timestamp: 2025-10-13T16:55:59.321Z
Learning: Applies to tools/performance/**/*.cs : For buffer indicators, benchmark methods should follow the pattern: [Benchmark] public MyIndicatorList MyIndicatorList() => new(14) { quotes };

Applied to files:

  • .github/agents/indicator-buffer.agent.md
  • .github/agents/indicator-series.agent.md
  • .github/instructions/indicator-series.instructions.md
  • .github/agents/performance.agent.md
  • .github/instructions/indicator-buffer.instructions.md
  • .github/copilot-instructions.md
📚 Learning: 2025-10-03T17:49:24.747Z
Learnt from: DaveSkender
Repo: DaveSkender/Stock.Indicators PR: 1471
File: tests/indicators/s-z/Tsi/Tsi.StreamHub.Tests.cs:84-247
Timestamp: 2025-10-03T17:49:24.747Z
Learning: Static series implementations are the canonical reference for indicators, aligned to original reputable author formulas linked in documentation. Buffer lists and stream hubs must match static series exactly.

Applied to files:

  • .github/agents/indicator-buffer.agent.md
  • .github/agents/indicator-series.agent.md
  • .github/instructions/indicator-series.instructions.md
  • .github/agents/indicator-stream.agent.md
  • .github/instructions/indicator-stream.instructions.md
  • .github/instructions/indicator-buffer.instructions.md
  • .github/copilot-instructions.md
📚 Learning: 2025-10-15T07:42:37.673Z
Learnt from: CR
Repo: DaveSkender/Stock.Indicators PR: 0
File: src/agents.md:0-0
Timestamp: 2025-10-15T07:42:37.673Z
Learning: Follow style-specific implementation guides for Series, Stream, and Buffer as linked in .github/instructions

Applied to files:

  • .github/agents/indicator-buffer.agent.md
  • .github/agents/indicator-series.agent.md
  • .github/instructions/indicator-series.instructions.md
  • .github/agents/indicator-stream.agent.md
  • .github/instructions/indicator-stream.instructions.md
  • .github/instructions/indicator-buffer.instructions.md
  • .github/copilot-instructions.md
📚 Learning: 2025-10-03T17:49:24.747Z
Learnt from: DaveSkender
Repo: DaveSkender/Stock.Indicators PR: 1471
File: tests/indicators/s-z/Tsi/Tsi.StreamHub.Tests.cs:84-247
Timestamp: 2025-10-03T17:49:24.747Z
Learning: All indicator implementation styles (static series, buffer lists, stream hubs) must be mathematically equivalent and produce identical results when given the same parameters and data. Any drift between implementations indicates a source code error, not acceptable floating-point variance.

Applied to files:

  • .github/agents/indicator-buffer.agent.md
  • .github/agents/indicator-series.agent.md
  • .github/instructions/indicator-series.instructions.md
  • .github/agents/performance.agent.md
  • .github/agents/indicator-stream.agent.md
  • .github/instructions/indicator-stream.instructions.md
  • .github/instructions/indicator-buffer.instructions.md
  • .github/copilot-instructions.md
📚 Learning: 2025-10-13T16:55:59.321Z
Learnt from: CR
Repo: DaveSkender/Stock.Indicators PR: 0
File: .github/instructions/performance-testing.instructions.md:0-0
Timestamp: 2025-10-13T16:55:59.321Z
Learning: Applies to tools/performance/**/*.cs : For series indicators, benchmark methods should follow the pattern: [Benchmark] public void ToMyIndicator() => quotes.ToMyIndicator(14);

Applied to files:

  • .github/agents/indicator-buffer.agent.md
  • .github/agents/indicator-series.agent.md
  • .github/instructions/indicator-series.instructions.md
  • .github/agents/performance.agent.md
  • .github/copilot-instructions.md
📚 Learning: 2025-10-13T16:55:59.321Z
Learnt from: CR
Repo: DaveSkender/Stock.Indicators PR: 0
File: .github/instructions/performance-testing.instructions.md:0-0
Timestamp: 2025-10-13T16:55:59.321Z
Learning: Applies to tools/performance/**/*.cs : For stream indicators, benchmark methods should follow the pattern: [Benchmark] public object MyIndicatorHub() => quoteHub.ToMyIndicator(14).Results;

Applied to files:

  • .github/agents/indicator-buffer.agent.md
  • .github/agents/indicator-series.agent.md
  • .github/instructions/indicator-series.instructions.md
  • .github/agents/performance.agent.md
  • .github/agents/indicator-stream.agent.md
  • .github/instructions/indicator-stream.instructions.md
  • .github/copilot-instructions.md
📚 Learning: 2025-10-13T16:55:59.321Z
Learnt from: CR
Repo: DaveSkender/Stock.Indicators PR: 0
File: .github/instructions/performance-testing.instructions.md:0-0
Timestamp: 2025-10-13T16:55:59.321Z
Learning: Applies to tools/performance/**/*.cs : For style comparisons, include benchmarks for series, buffer, and stream variants of the same indicator

Applied to files:

  • .github/agents/indicator-buffer.agent.md
  • .github/agents/indicator-series.agent.md
  • .github/instructions/indicator-series.instructions.md
  • .github/agents/performance.agent.md
  • .github/agents/indicator-stream.agent.md
  • .github/instructions/indicator-buffer.instructions.md
  • .github/copilot-instructions.md
📚 Learning: 2025-10-09T09:37:31.805Z
Learnt from: DaveSkender
Repo: DaveSkender/Stock.Indicators PR: 1503
File: src/a-d/Beta/Beta.BufferList.cs:6-11
Timestamp: 2025-10-09T09:37:31.805Z
Learning: The IBufferReusable interface is designed for single-input indicators only. Dual-input indicators like Beta, Correlation, and PRS cannot implement IBufferReusable because they require synchronized pairs of inputs (e.g., evaluated asset and market benchmark) rather than single values, making them incompatible with IBufferReusable's single-input method signatures (Add(DateTime, double), Add(IReusable), Add(IReadOnlyList<IReusable>)).

Applied to files:

  • .github/agents/indicator-buffer.agent.md
📚 Learning: 2025-10-21T03:24:07.782Z
Learnt from: DaveSkender
Repo: DaveSkender/Stock.Indicators PR: 1581
File: tests/indicators/e-k/ForceIndex/ForceIndex.Regression.Tests.cs:15-15
Timestamp: 2025-10-21T03:24:07.782Z
Learning: In regression tests (tests/indicators/**/*.Regression.Tests.cs), using default parameters (e.g., not specifying lookback periods) is intentional to validate that defaults remain consistent across Series, Buffer, and Stream implementations. Test failures due to default changes are desired behavior.

Applied to files:

  • .github/agents/indicator-buffer.agent.md
  • .github/agents/indicator-series.agent.md
📚 Learning: 2025-10-13T16:57:01.555Z
Learnt from: CR
Repo: DaveSkender/Stock.Indicators PR: 0
File: tests/agents.md:0-0
Timestamp: 2025-10-13T16:57:01.555Z
Learning: Applies to tests/indicators/**/*StaticSeries*.Tests.cs : Series-style indicator tests must inherit from StaticSeriesTestBase

Applied to files:

  • .github/agents/indicator-series.agent.md
  • .github/instructions/indicator-series.instructions.md
  • .github/agents/indicator-stream.agent.md
  • .github/copilot-instructions.md
📚 Learning: 2025-10-28T03:17:43.216Z
Learnt from: DaveSkender
Repo: DaveSkender/Stock.Indicators PR: 1632
File: src/a-d/Bop/Bop.BufferList.cs:94-94
Timestamp: 2025-10-28T03:17:43.216Z
Learning: In the Stock.Indicators C# codebase, XML documentation parameter descriptions should not start with "The". Prefer concise descriptions like "Number of periods for smoothing" over "The number of periods to use for smoothing."

Applied to files:

  • .github/agents/indicator-series.agent.md
📚 Learning: 2025-09-28T22:37:53.272Z
Learnt from: DaveSkender
Repo: DaveSkender/Stock.Indicators PR: 1406
File: .github/copilot-instructions.md:37-55
Timestamp: 2025-09-28T22:37:53.272Z
Learning: For the Stock Indicators repository: Use double for performance in iterative indicator calculations, then promote to decimal when exposing price-sensitive or monetary results that require trading accuracy. The canonical numeric precision policy is documented in .github/instructions/source-code-completion.instructions.md and referenced in spec-kit integration guide.

Applied to files:

  • .github/agents/indicator-series.agent.md
  • .github/instructions/indicator-series.instructions.md
  • .github/agents/performance.agent.md
  • .github/agents/indicator-stream.agent.md
  • .github/copilot-instructions.md
📚 Learning: 2025-10-15T07:42:37.673Z
Learnt from: CR
Repo: DaveSkender/Stock.Indicators PR: 0
File: src/agents.md:0-0
Timestamp: 2025-10-15T07:42:37.673Z
Learning: Before changing indicator code, ensure bit-for-bit parity with the Series baseline for streaming implementations

Applied to files:

  • .github/instructions/indicator-series.instructions.md
  • .github/agents/indicator-stream.agent.md
  • .github/instructions/indicator-buffer.instructions.md
  • .github/copilot-instructions.md
📚 Learning: 2025-10-01T07:32:55.702Z
Learnt from: CR
Repo: DaveSkender/Stock.Indicators PR: 0
File: .github/instructions/performance-testing.instructions.md:0-0
Timestamp: 2025-10-01T07:32:55.702Z
Learning: Profile before optimizing; run benchmarks incrementally and document significant performance improvements in PRs

Applied to files:

  • .github/agents/performance.agent.md
📚 Learning: 2025-10-13T16:55:59.321Z
Learnt from: CR
Repo: DaveSkender/Stock.Indicators PR: 0
File: .github/instructions/performance-testing.instructions.md:0-0
Timestamp: 2025-10-13T16:55:59.321Z
Learning: Document significant performance changes in PR descriptions

Applied to files:

  • .github/agents/performance.agent.md
📚 Learning: 2025-10-01T07:32:55.702Z
Learnt from: CR
Repo: DaveSkender/Stock.Indicators PR: 0
File: .github/instructions/performance-testing.instructions.md:0-0
Timestamp: 2025-10-01T07:32:55.702Z
Learning: Optimize hot paths: minimize allocations, avoid excessive LINQ, use Span<T> where appropriate, cache calculations, and test with realistic data sizes (502 periods)

Applied to files:

  • .github/agents/performance.agent.md
📚 Learning: 2025-10-13T16:55:59.321Z
Learnt from: CR
Repo: DaveSkender/Stock.Indicators PR: 0
File: .github/instructions/performance-testing.instructions.md:0-0
Timestamp: 2025-10-13T16:55:59.321Z
Learning: Profile before optimizing; use benchmarks to identify bottlenecks

Applied to files:

  • .github/agents/performance.agent.md
📚 Learning: 2025-10-13T16:55:59.321Z
Learnt from: CR
Repo: DaveSkender/Stock.Indicators PR: 0
File: .github/instructions/performance-testing.instructions.md:0-0
Timestamp: 2025-10-13T16:55:59.321Z
Learning: Use BenchmarkDotNet filters to run specific categories or indicators during development

Applied to files:

  • .github/agents/performance.agent.md
📚 Learning: 2025-10-15T07:42:37.673Z
Learnt from: CR
Repo: DaveSkender/Stock.Indicators PR: 0
File: src/agents.md:0-0
Timestamp: 2025-10-15T07:42:37.673Z
Learning: Maintain bit-for-bit parity across Series, BufferList, and StreamHub implementations; Series is the baseline

Applied to files:

  • .github/agents/indicator-stream.agent.md
  • .github/instructions/indicator-buffer.instructions.md
  • .github/copilot-instructions.md
📚 Learning: 2025-10-31T04:56:01.231Z
Learnt from: DaveSkender
Repo: DaveSkender/Stock.Indicators PR: 0
File: :0-0
Timestamp: 2025-10-31T04:56:01.231Z
Learning: For repaint-by-design indicators like ZigZag that require full history recalculation: Override Rebuild(DateTime fromTimestamp) to use the Series implementation instead of incremental processing. Call NotifyObserversOnRebuild(fromTimestamp) after updating Cache. Do not manipulate Cache directly in ToIndicator or custom helper methods.

Applied to files:

  • .github/agents/indicator-stream.agent.md
📚 Learning: 2025-10-31T04:56:01.231Z
Learnt from: DaveSkender
Repo: DaveSkender/Stock.Indicators PR: 0
File: :0-0
Timestamp: 2025-10-31T04:56:01.231Z
Learning: ZigZagHub must override Rebuild() to use ProviderCache.ToZigZag() for full recalculation and call NotifyObserversOnRebuild() to notify chain observers. ToIndicator should simply return cached results. RollbackState should call Rebuild(DateTime.MinValue) to trigger full recalculation.

Applied to files:

  • .github/agents/indicator-stream.agent.md
📚 Learning: 2025-09-30T19:55:41.630Z
Learnt from: DaveSkender
Repo: DaveSkender/Stock.Indicators PR: 1441
File: docs/_indicators/Renko.md:123-124
Timestamp: 2025-09-30T19:55:41.630Z
Learning: In Renko with ATR (GetRenkoAtr), repainting is mathematically certain, not conditional. The algorithm determines the ATR value based on the last bar and then applies it to the whole set, so historical bricks will definitely repaint when new periods are added. Use "will repaint" not "may repaint" in documentation.

Applied to files:

  • .github/agents/indicator-stream.agent.md
📚 Learning: 2025-10-13T16:57:01.555Z
Learnt from: CR
Repo: DaveSkender/Stock.Indicators PR: 0
File: tests/agents.md:0-0
Timestamp: 2025-10-13T16:57:01.555Z
Learning: Applies to tests/indicators/**/*StreamHub*.Tests.cs : Stream-style indicator tests must inherit from StreamHubTestBase

Applied to files:

  • .github/agents/indicator-stream.agent.md
  • .github/instructions/indicator-stream.instructions.md
  • .github/copilot-instructions.md
📚 Learning: 2025-09-28T17:07:40.145Z
Learnt from: CR
Repo: DaveSkender/Stock.Indicators PR: 0
File: .github/instructions/documentation.instructions.md:0-0
Timestamp: 2025-09-28T17:07:40.145Z
Learning: Applies to docs/_indicators/**/*.{md,markdown} : Include comprehensive examples with sample data in indicator pages

Applied to files:

  • .github/instructions/indicator-stream.instructions.md
  • .github/copilot-instructions.md
📚 Learning: 2025-10-01T07:32:55.702Z
Learnt from: CR
Repo: DaveSkender/Stock.Indicators PR: 0
File: .github/instructions/performance-testing.instructions.md:0-0
Timestamp: 2025-10-01T07:32:55.702Z
Learning: Use filters to run specific benchmark categories or indicators during development

Applied to files:

  • .github/copilot-instructions.md
⏰ Context from checks skipped due to timeout of 400000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
  • GitHub Check: linting (full)
  • GitHub Check: Codacy Static Code Analysis
🔇 Additional comments (14)
.github/instructions/indicator-series.instructions.md (1)

10-30: Cross-agent guidance well integrated.

The new "When to use this agent" and "Related agents" sections clearly contextualize the Series agent within the ecosystem. References to .github/agents/indicator-series.agent.md and related agents align with the broader PR structure. This section effectively bridges Copilot Chat guidance to comprehensive inline documentation.

.github/instructions/indicator-buffer.instructions.md (1)

10-30: Consistent guidance structure mirrors Series pattern.

The "When to use this agent" and "Related agents" sections follow the same clarity-focused format as indicator-series.instructions.md. The invocation scenarios for @buffer clearly articulate incremental processing, interface selection, and state management concerns. This provides strong discoverability from the instructions into Copilot Chat.

.github/agents/indicator-stream.agent.md (1)

256-279: "When to use this agent" section clearly delineated with specialized sub-agents.

Lines 256-279 establish clear invocation criteria and expert sub-agents (@streamhub-state, @streamhub-performance, @streamhub-testing, @streamhub-pairs). This hierarchical guidance helps developers quickly find specialized expertise. The "Related agents" block (lines 268-278) appropriately includes @performance and foundational agents (@Series, @buffer), reinforcing cross-style consistency.

.github/agents/performance.agent.md (2)

1-50: New @performance agent establishes comprehensive performance framework.

The new performance agent file successfully consolidates O(n²) anti-pattern identification and O(1) optimization guidance across all indicator styles. The performance targets (baseline Series, ≤1.2x BufferList, ≤1.5x StreamHub) align with established practice documented in learnings. Concrete before/after code examples for nested loops and LINQ anti-patterns provide actionable guidance that developers can immediately apply.


166-233: Style-specific optimization patterns aid targeted guidance.

Section outlining Series (avoid O(n²) loops, minimize allocations), BufferList (maintain O(1) Add operations), and StreamHub (avoid Series calls on every tick, use RollingWindowMax/Min) concerns provides clear, actionable guidance scoped to each style. Reference to @streamhub-performance sub-agent at line 233 appropriately delegates deep dives while maintaining this file's role as entry point for performance concerns.

.github/agents/indicator-buffer.agent.md (2)

21-115: Decision trees provide systematic guidance for common BufferList scenarios.

Lines 21-115 organize BufferList development decisions (interface selection, buffer management, state management, constructor patterns, test base class) into clear decision trees with examples. This structure enables developers to quickly navigate choices. Cross-references to instruction file at line 56, 85, 113, 150, 182 provide escape hatches to comprehensive guidance without overwhelming the agent doc itself.


282-302: Agent invocation guidance clearly scoped with "Related agents" cross-references.

The "When to use this agent" section (lines 282-294) establishes clear invocation criteria emphasizing interface selection, buffer utilities, and state management. "Related agents" block (lines 296-302) correctly identifies @Series, @streamhub, and @performance as complementary specialists. Cross-reference to instruction file provides a clear next step for comprehensive guidance.

.github/agents/indicator-series.agent.md (2)

21-134: Decision trees systematically guide Series indicator file organization and validation.

Lines 21-134 break Series development into clear decision points: file naming/organization, input validation approach, warmup period handling, performance optimization, and test coverage. Each decision includes concrete patterns and references to instruction file details. This structure helps developers quickly identify what decision they face and find relevant guidance.


243-263: Clear agent invocation scope with foundational reference emphasis.

The "When to use this agent" section (lines 243-255) establishes invocation criteria for Series indicator implementation, validation, and test coverage concerns. The description that Series indicators are "canonical reference for mathematical correctness" at line 139 reinforces the architectural principle. "Related agents" block (lines 257-263) correctly identifies @buffer, @streamhub, and @performance as complementary specialists.

.github/instructions/indicator-stream.instructions.md (1)

12-43: Hierarchical agent guidance enables targeted expertise discovery.

Lines 12-43 establish both primary @streamhub agent and specialized sub-agents (@streamhub-state, @streamhub-performance, @streamhub-testing, @streamhub-pairs), creating a hierarchy that supports both quick answers and deep dives. The distinction between "For quick decision guidance" vs. "For comprehensive implementation details" (line 31) clearly explains when to stay in the agent vs. reading this document. Addition of @performance at line 41 in related agents correctly reflects new guidance added by this PR.

.github/copilot-instructions.md (2)

126-161: Custom agents ecosystem well-integrated into primary instructions.

Lines 126-161 successfully establish the custom agents table as the central discovery point for Copilot Chat agents. Addition of @Series, @buffer, and @performance agents completes the core indicator development agents. Usage examples (lines 141-159) provide concrete prompts developers can adapt. Reference to official GitHub Copilot documentation at line 161 adds credibility and directs users to platform-official guidance.


132-139: Agent table entries clearly delineate when to use each agent.

The updated custom agents table (lines 126-139) concisely describes each agent's purpose with actionable "When to use" guidance. The @performance agent entry (line 139) correctly emphasizes identification of bottlenecks and elimination of O(n²) anti-patterns across all styles, positioning it as the cross-cutting performance agent in the ecosystem.

.specify/specs/003-coding-agents/tasks.md (2)

53-53: Validation tasks appropriately deferred for manual Copilot Chat testing.

Tasks T013, T018, T023–T024, and T033 are correctly marked incomplete ([ ]) because they require hands-on GitHub Copilot Chat invocation and qualitative validation. This PR is being submitted for review before manual testing has been performed—which is reasonable for a PR intended for reviewer feedback and testing.

Recommend: Reviewers should plan to manually test these scenarios (or automate via CI integration if Copilot API supports it) before merging.

Also applies to: 71-71, 89-90, 108-108


100-111: Task completion markers and polish phase coherence look sound.

The Phase 6 (Polish & Cross-Cutting Concerns) tasks show specific results recorded:

  • T031: Content duplication review completed with findings noted (line 106)
  • T032: File size validation completed with measurements (Series ~270, Buffer ~280, Stream ~290 lines; line 107)
  • T034–T036: Documentation and agent creation tasks marked complete

However, T033 (full quickstart validation) is marked incomplete, while T034–T036 (downstream tasks) are marked complete. This ordering is logical for a pre-review PR—documentation and agent creation don't strictly block PR submission, and manual validation can follow. Just verify that this sequencing aligns with your team's release gating criteria.

@DaveSkender DaveSkender merged commit 0a7af1a into v3 Nov 3, 2025
13 checks passed
@DaveSkender DaveSkender deleted the 003-coding-agents branch November 3, 2025 21:00
@github-actions github-actions bot locked as resolved and limited conversation to collaborators Dec 7, 2025
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

Archived in project

Development

Successfully merging this pull request may close these issues.

1 participant