Skip to content

feat(agent-task): add integration templates - #2957

Open
RemiBonnet wants to merge 15 commits into
stagingfrom
feat/agent-task-templates
Open

feat(agent-task): add integration templates#2957
RemiBonnet wants to merge 15 commits into
stagingfrom
feat/agent-task-templates

Conversation

@RemiBonnet

@RemiBonnet RemiBonnet commented Sep 11, 2026

Copy link
Copy Markdown
Member

Summary

Add integration-specific Agent Task templates on top of the trigger/output creation flow.

  • Split Incident Analyzer into incident.io and Honeybadger templates with dedicated logos and credentials
  • Default both incident templates to Clone environment mode with a preconfigured webhook trigger
  • Add Jira Coding Agent and Linear Coding Agent templates with dedicated logos and credential placeholders
  • Render branded template logos in the Agent use-case catalog

This PR builds on the Agent Task creation flow merged in #2956.

Screenshots / Recordings

N/A

Testing

  • Targeted Jest tests (29 tests across 2 suites)
  • TypeScript check for domains-services-feature
  • Formatting applied to changed source files
  • ESLint on changed source files
  • SVG validation and visual review

PR Checklist

  • I followed naming, styling, and TypeScript rules (see .cursor/rules)
  • I performed a self-review (diff inspected, dead code removed)
  • I titled the PR using Conventional Commits with a scope
  • I only kept necessary comments, written in English
  • I involved a designer to validate UI changes if I am not a designer
  • I covered new business logic with tests (unit)
  • I confirmed CI is green (Codecov red can be accepted)
  • I reviewed and executed locally any assisted code

Summary by cubic

Adds integration-specific Agent Task templates for incident.io, Honeybadger, Jira, and Linear, with official logos and credential placeholders. Replaces the single generic Incident Analyser template and updates the agent use-case catalog to render the branded logos, show each use case's description, and label the catalog as Beta. The Jira and Linear coding templates whitelist GitHub, GitLab, and Bitbucket hosts so the agents can open pull requests; the Jira template also whitelists *.atlassian.net and configures Jira Cloud Basic authentication. The Linear template ships light and dark logo variants.

Migration

  • The old incident-analyser template is replaced by incident-io-analyzer and honeybadger-incident-analyzer; any links using the old ID break.
  • Incident templates now default to clone environment mode with a preconfigured webhook trigger and no longer include the SLACK_WEBHOOK_URL variable.

Written for commit 38fdb0e. Summary will update on new commits.

Review in cubic

@nx-cloud

nx-cloud Bot commented Sep 11, 2026

Copy link
Copy Markdown

View your CI Pipeline Execution ↗ for commit 38fdb0e

Command Status Duration Result
nx run console:build --parallel=3 --configurati... ✅ Succeeded 1m 10s View ↗
nx affected --target=test --parallel=3 --config... ✅ Succeeded 2m 28s View ↗
nx affected --target=lint --parallel=3 ✅ Succeeded 2m 31s View ↗
nx-cloud record -- yarn nx format:check ✅ Succeeded 5s View ↗

💡 Verify your cache is correct by running tasks in a sandbox. Read docs ↗


☁️ Nx Cloud last updated this comment at 2026-09-11 16:02:11 UTC

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

All reported issues were addressed across 8 files

Reply with feedback, questions, or to request a fix.

Re-trigger cubic

@codecov

codecov Bot commented Sep 11, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 93.33333% with 1 line in your changes missing coverage. Please review.
✅ Project coverage is 46.53%. Comparing base (f39f461) to head (38fdb0e).

Files with missing lines Patch % Lines
...rvices/feature/src/lib/service-new/service-new.tsx 75.00% 0 Missing and 1 partial ⚠️
Additional details and impacted files
@@             Coverage Diff             @@
##           staging    #2957      +/-   ##
===========================================
- Coverage    49.47%   46.53%   -2.94%     
===========================================
  Files         1246      515     -731     
  Lines        27108    13604   -13504     
  Branches      8132     4215    -3917     
===========================================
- Hits         13412     6331    -7081     
+ Misses       11465     6203    -5262     
+ Partials      2231     1070    -1161     
Flag Coverage Δ
unittests 46.53% <93.33%> (-2.94%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

2 issues found across 10 files (changes from recent commits).

Confidence score: 4/5

  • In service-card.tsx, unconstrained description text can overflow the card and bypass the intended line clamp when showDescription is enabled; add a width constraint to the text wrapper so long content wraps within the card.
  • In service-new.tsx, the <Icon> color class is overridden by BaseServiceCard's cloneElement props, so the intended brand color is not applied; preserve or explicitly pass the icon color through the card component.
Prompt for AI agents (unresolved issues)

Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.


<file name="libs/domains/services/feature/src/lib/service-new/service-card/service-card.tsx">

<violation number="1" location="libs/domains/services/feature/src/lib/service-new/service-card/service-card.tsx:61">
P2: When `showDescription` is enabled, the card uses `items-start`, but this text wrapper has no width constraint. Long descriptions can extend beyond the card instead of wrapping within the card and honoring `line-clamp-3`; make the wrapper full width.</violation>
</file>

<file name="libs/domains/services/feature/src/lib/service-new/service-new.tsx">

<violation number="1" location="libs/domains/services/feature/src/lib/service-new/service-new.tsx:318">
P3: The `text-2xl text-[color:var(--brand-9)]` class on these `<Icon>` elements never takes effect. `BaseServiceCard` renders the icon via `cloneElement(icon, { width: 36, height: 36, className: 'h-9 w-9 shrink-0' })` (service-card.tsx detailedContent), and `cloneElement` overwrites the existing className instead of merging it. As a result the icons on the `Build & deployment optimizer`, `Start from scratch`, and `Need a specific agent? Contact us` cards ignore both `text-2xl` (size) and `var(--brand-9)` (color), rendering at the cloneElement's `h-9 w-9` size with the default inherited color. Drop the className from the JSX (the size is supplied by the card) or make the card merge, and move the brand color onto the `Icon` inside the logo `<span>` where cloneElement won't override it.</violation>
</file>

Tip: Review your code locally with the cubic CLI to iterate faster.

Re-trigger cubic

{cloneElement(icon as ReactElement, { width: 36, height: 36, className: 'h-9 w-9 shrink-0' })}
<Icon iconName="chevron-right" className="shrink-0 text-sm text-neutral-subtle" />
</span>
<span className="flex min-w-0 flex-col gap-1">

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P2: When showDescription is enabled, the card uses items-start, but this text wrapper has no width constraint. Long descriptions can extend beyond the card instead of wrapping within the card and honoring line-clamp-3; make the wrapper full width.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At libs/domains/services/feature/src/lib/service-new/service-card/service-card.tsx, line 61:

<comment>When `showDescription` is enabled, the card uses `items-start`, but this text wrapper has no width constraint. Long descriptions can extend beyond the card instead of wrapping within the card and honoring `line-clamp-3`; make the wrapper full width.</comment>

<file context>
@@ -24,27 +24,47 @@ export type ServiceBlock = {
+        {cloneElement(icon as ReactElement, { width: 36, height: 36, className: 'h-9 w-9 shrink-0' })}
+        <Icon iconName="chevron-right" className="shrink-0 text-sm text-neutral-subtle" />
+      </span>
+      <span className="flex min-w-0 flex-col gap-1">
+        <span className="text-sm font-medium leading-5 text-neutral">{title}</span>
+        <span className="line-clamp-3 text-xs font-normal leading-5 text-neutral-subtle">{description}</span>
</file context>
Suggested change
<span className="flex min-w-0 flex-col gap-1">
<span className="flex w-full min-w-0 flex-col gap-1">

)}
</>
) : template.iconName ? (
<Icon iconName={template.iconName} iconStyle="regular" className="text-2xl text-[color:var(--brand-9)]" />

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P3: The text-2xl text-[color:var(--brand-9)] class on these <Icon> elements never takes effect. BaseServiceCard renders the icon via cloneElement(icon, { width: 36, height: 36, className: 'h-9 w-9 shrink-0' }) (service-card.tsx detailedContent), and cloneElement overwrites the existing className instead of merging it. As a result the icons on the Build & deployment optimizer, Start from scratch, and Need a specific agent? Contact us cards ignore both text-2xl (size) and var(--brand-9) (color), rendering at the cloneElement's h-9 w-9 size with the default inherited color. Drop the className from the JSX (the size is supplied by the card) or make the card merge, and move the brand color onto the Icon inside the logo <span> where cloneElement won't override it.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At libs/domains/services/feature/src/lib/service-new/service-new.tsx, line 318:

<comment>The `text-2xl text-[color:var(--brand-9)]` class on these `<Icon>` elements never takes effect. `BaseServiceCard` renders the icon via `cloneElement(icon, { width: 36, height: 36, className: 'h-9 w-9 shrink-0' })` (service-card.tsx detailedContent), and `cloneElement` overwrites the existing className instead of merging it. As a result the icons on the `Build & deployment optimizer`, `Start from scratch`, and `Need a specific agent? Contact us` cards ignore both `text-2xl` (size) and `var(--brand-9)` (color), rendering at the cloneElement's `h-9 w-9` size with the default inherited color. Drop the className from the JSX (the size is supplied by the card) or make the card merge, and move the brand color onto the `Icon` inside the logo `<span>` where cloneElement won't override it.</comment>

<file context>
@@ -299,16 +300,22 @@ export function ServiceNew({
-                iconStyle="regular"
-                className="text-base text-[color:var(--brand-9)]"
-              />
+              <Icon iconName={template.iconName} iconStyle="regular" className="text-2xl text-[color:var(--brand-9)]" />
             ) : null}
           </span>
</file context>

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant