Skip to content

Commit df02dc7

Browse files
Sync agents and skills from help-content-tools (#1247)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
1 parent 178a9b0 commit df02dc7

10 files changed

Lines changed: 950 additions & 331 deletions

File tree

‎.github/agents/Add-feature-conditions.agent.md‎

Lines changed: 97 additions & 0 deletions
Large diffs are not rendered by default.

‎.github/agents/Assess-doc-impact.agent.md‎

Lines changed: 45 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,29 @@ Evaluate whether the ticket contains enough information — directly stated or r
7070

7171
---
7272

73-
### Step 3: Assess Documentation Impact
73+
### Step 3: Classify Target Repository
74+
75+
Invoke the **repository-classifier** skill to determine which documentation repository (or repositories) should handle this ticket.
76+
77+
**Pass to the skill:**
78+
- Product field value from Step 1: `fields.customfield_10178`
79+
- Description: `fields.description`
80+
- Summary: `fields.summary`
81+
- What's New content: `fields.customfield_10478`
82+
83+
**The skill returns:**
84+
```json
85+
{
86+
"labels": ["repository-label"],
87+
"note": ""
88+
}
89+
```
90+
91+
**Record the `labels` and `note` values for use in later steps.**
92+
93+
---
94+
95+
### Step 4: Assess Documentation Impact
7496

7597
Always attempt this step, even if input quality is incomplete. Use whatever information is available.
7698

@@ -94,6 +116,8 @@ Evaluate the ticket separately for **help.qlik.com** (end-user documentation) an
94116
- Modifies integration points, embed patterns, or developer tools
95117
- Changes API rate limits, quotas, or error codes
96118

119+
**Note:** Don't infer Qlik.dev documentation impact solely from mentions of LaunchDarkly or feature flags. Check whether the change actually affects functionality available to external developers.
120+
97121
#### Signals that indicate no doc impact for both (all of these = NO for both):
98122
- Purely internal or backend change with no user-visible effect
99123
- Performance improvement or infrastructure change with no behavior change
@@ -198,6 +222,7 @@ The assessment report should contain:
198222

199223
**Additional considerations:**
200224
[Include this section only if any of the following apply:]
225+
- **Repository classification:** [If `note` from Step 3 is not empty: include the note text here]
201226
- **Availability:** [If not explicitly stated in ticket: "Assumed available to all subscription tiers and regions (not explicitly stated in ticket)" OR if stated: summarize tier/edition/region restrictions and enablement method]
202227
- **AI/GenAI feature:** [If detected: "This feature uses AI/ML capabilities and requires GenAI disclaimers and responsible AI documentation"]
203228
- **Migration impact:** [If detected: briefly describe the impact on existing users, migration requirements, or breaking changes]
@@ -215,11 +240,13 @@ The assessment report should contain:
215240

216241
#### Labels to apply
217242

243+
Apply documentation impact labels AND repository labels from Step 3.
244+
218245
| Outcome | Labels to add |
219246
|---|---|
220-
| Both impacts = no | `DocImpact-no` |
221-
| Either impact = yes, complexity = low or medium | `DocImpact-yes`, `DocAutomation-valid` |
222-
| Either impact = yes, complexity = high or unknown | `DocImpact-yes` |
247+
| Both impacts = no | `DocImpact-no`, [repository labels from Step 3] |
248+
| Either impact = yes, complexity = low or medium | `DocImpact-yes`, `DocAutomation-valid`, [repository labels from Step 3] |
249+
| Either impact = yes, complexity = high or unknown | `DocImpact-yes`, [repository labels from Step 3] |
223250

224251
#### TLV-specific checklist updates
225252

@@ -262,12 +289,26 @@ If error handling is invoked: log a warning but do not fail the agent run. The c
262289

263290
## Labels Reference
264291

292+
### Documentation Impact Labels
293+
265294
| Label | Applied when |
266295
|---|---|
267296
| `DocImpact-no` | No user-facing documentation impact detected |
268297
| `DocImpact-yes` | Documentation impact confirmed |
269298
| `DocAutomation-valid` | Doc impact is low or medium complexity — safe for automated draft |
270299

300+
### Repository Labels
301+
302+
Applied by the **repository-classifier** skill based on Product field:
303+
304+
| Label | Repository | Content Type |
305+
|---|---|---|
306+
| `help-documentation` | qlik-trial/help-documentation | Qlik Cloud and client-managed products (Flare) |
307+
| `docs-core-80` | Talend/docs-core (80-main branch) | Talend on-premises products (DITA) |
308+
| `docs-core-cloud` | Talend/docs-core (cloud-main branch) | Talend cloud products (DITA) |
309+
| `docs-components` | Talend/docs-components | Talend Studio reusable components (DITA) |
310+
| `stitch-docs` | stitchdata/docs | Stitch Heritage documentation (Markdown)|
311+
271312
## Safety and Boundaries
272313

273314
- Do not draft any documentation content — this agent assesses and routes only.

‎.github/agents/Draft-doc.agent.md‎

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,10 @@ For each documentation request (update, addition, or creation):
3535
- **If jira-context was already executed (e.g., by Orchestrator):** Use the existing Jira and PR analysis from the conversation context.
3636
2. **Draft Documentation**:
3737
- Invoke the **qlik-writing-guidelines** skill to load style, structure, accessibility, localization, and legal/product naming rules.
38-
- **For Flare content**: Load the product-specific variable set from `Project/VariableSets/{Product}.flvar` (e.g., `Replicate.flvar`, `Sense_Release.flvar`) and use variables for product names, versions, and service names (see copilot-instructions.md for details).
38+
- **For Flare content**:
39+
- Load the product-specific variable set from `Project/VariableSets/{Product}.flvar` (e.g., `Replicate.flvar`, `Sense_Release.flvar`) and use variables for product names, versions, and service names (see copilot-instructions.md for details).
40+
- Always check the topic being edited and all its ancestor elements for `MadCap:conditions` with `Features.<ticket-id>` or `Features.NotIn<ticket-id>` before editing. If found, invoke the **flare-feature-conditions** skill and follow its decision table.
41+
- Never create a new feature condition and never add a feature condition to content you create or update.
3942
- **For DITA content in docs-core or docs-components**: Invoke the **dita-variables** skill and use `common/taxonomy/metadata-variables.dita` `<keyword conref>` references for product names, module names, and brand names.
4043
- Update the documentation based on input and analysis, applying the rules from the **qlik-writing-guidelines** skill.
4144
- Match the output structure and markup to the current repository's documentation format.

‎.github/agents/Orchestrator.agent.md‎

Lines changed: 8 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ This agent classifies incoming documentation requests and selects the appropriat
1010
- Direct fix (e.g., typo, single value change)
1111
- Single-topic or simple changes
1212
- Complex/multi-topic documentation updates
13-
- UI string/localization changes
1413

1514
The orchestrator improves efficiency by routing requests to the optimal agent sequence based on complexity and scope.
1615

@@ -26,7 +25,7 @@ The orchestrator accepts:
2625
### Detecting User Workflow Preferences
2726

2827
The user has specified a workflow preference if they:
29-
- Name an agent explicitly (e.g., "use Plan-doc", "run String-review", "skip planning")
28+
- Name an agent explicitly (e.g., "use Plan-doc", "skip planning")
3029
- Indicate scope explicitly (e.g., "just a quick fix", "this is complex", "needs full planning")
3130
- Request a specific approach (e.g., "review only", "draft without review")
3231

@@ -87,24 +86,7 @@ For ANY DOC Jira ticket, transition the issue to "In Progress" using transition
8786

8887
---
8988

90-
### 3. Pre-flight Pattern Matching
91-
92-
**BEFORE applying general classification logic, check if the request matches ANY of these patterns:**
93-
94-
1. File path contains `en.json` or `en.plural.json`
95-
2. Literal string "en.json" or "en.plural.json" appears in request
96-
3. Request mentions "UI string", "localization string", "UX copy", or "translation"
97-
4. Request contains JSON structure with `"comment"` and `"value"` keys
98-
5. Request mentions updating text in a locale file or resource bundle
99-
100-
**If ANY pattern matches:**
101-
- Set classification: **Localization/UI string change**
102-
- Set recommended workflow: **[String-review]**
103-
- Flag as *high confidence localization request*
104-
105-
---
106-
107-
### 4. Apply Classification Logic
89+
### 3. Apply Classification Logic
10890

10991
If no pre-flight pattern matched, classify based on scope and complexity:
11092

@@ -144,15 +126,7 @@ _Rationale_: Full documentation planning required to ensure consistency and comp
144126

145127
---
146128

147-
#### **Localization/UI String Change** *(from pre-flight)*
148-
_Indicators_: Matched pre-flight patterns (see step 2)
149-
150-
_Recommended workflow_: **[String-review]**
151-
_Rationale_: Specialized agent for UI copy review (style, localization readiness, legal compliance).
152-
153-
---
154-
155-
### 5. Resolve Workflow Conflicts
129+
### 4. Resolve Workflow Conflicts
156130

157131
**If the user specified a workflow preference AND it differs from the recommended classification:**
158132

@@ -179,12 +153,12 @@ Proceed directly to step 5 with the recommended workflow.
179153

180154
---
181155

182-
### 6. Announce Classification and Execute
156+
### 5. Announce Classification and Execute
183157

184158
1. **Announce your classification and selected workflow clearly:**
185159

186160
```
187-
**Classification:** [Direct fix | Single-topic change | Complex change | Localization string]
161+
**Classification:** [Direct fix | Single-topic change | Complex change]
188162
**Workflow:** [Agent sequence]
189163
**Rationale:** [Why this workflow was chosen]
190164
```
@@ -213,7 +187,7 @@ Proceed directly to step 5 with the recommended workflow.
213187

214188
---
215189

216-
### 7. Handle Uncertainty
190+
### 6. Handle Uncertainty
217191

218192
**If automated classification is uncertain** (e.g., insufficient context, ambiguous scope):
219193
- Present 2-3 most likely classifications with recommended workflows
@@ -229,7 +203,6 @@ Proceed directly to step 5 with the recommended workflow.
229203
| **Direct fix** | [Draft-doc] → (optional) [Review-doc] | Typos, single-value corrections, well-defined minimal changes |
230204
| **Single-topic** | [LightPlan-doc] → [Draft-doc] → [Review-doc] | One file/topic, minor additions, localized scope |
231205
| **Complex** | [Plan-doc] → [Draft-doc] → [Review-doc] | Multiple topics/files, new structures, cross-product impact |
232-
| **Localization** | [String-review] | en.json, UI strings, UX copy, translation updates |
233206

234207
---
235208

@@ -312,19 +285,7 @@ This requirement exists to ensure that the agent has complete information before
312285

313286
---
314287

315-
### Example 4: Pre-flight localization match
316-
**User**: `Update en.json: change "Click here" to "Select an option"`
317-
318-
**Agent**:
319-
1. Pre-flight check matches pattern (en.json + UI string)
320-
2. Classifies as localization string change
321-
3. No user workflow preference detected
322-
4. Announces: "**Classification:** Localization/UI string change → **Workflow:** [String-review]"
323-
5. Executes [String-review] agent
324-
325-
---
326-
327-
### Example 5: Direct fix
288+
### Example 4: Direct fix
328289
**User**: `DOC-7890 - Fix typo in Content/Sense/app-creation.htm`
329290

330291
**Agent**:
@@ -336,5 +297,4 @@ This requirement exists to ensure that the agent has complete information before
336297
6. Loads `finalize-draft-pr` skill → commits, pushes, creates PR with reviewers, includes alphahelp preview links in the PR body, and posts preview links to the Jira DOC ticket
337298
7. Reports: "Draft complete and PR created: <link to the PR>"
338299

339-
---
340-
300+
---

‎.github/agents/Review-doc.agent.md‎

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,11 @@ When asked to review content, provide output in this structure:
1414
3. **Improve content**: Apply all fixes directly using the Replace tool.
1515
4. **(optional) Follow-up**: Open questions and [ASSUMED] items.
1616

17+
## Feature Condition Check
18+
When reviewing Flare content:
19+
1. Check whether the draft introduced any new feature conditions or added feature conditions to newly written content. If so, flag this as an issue.
20+
2. If the draft edits or links to content under `Features.<ticket-id>` or `Features.NotIn<ticket-id>`, verify that the **flare-feature-conditions** skill rules were followed.
21+
1722
## Placeholder Validation
1823
**IMPORTANT:** Review-doc is the final review gate. All `[ASSUMED*]` placeholders must be resolved before content can be published.
1924

@@ -26,5 +31,5 @@ When reviewing drafted content:
2631
4. **Do NOT improve**: These must be filled in by the content owner, not guessed by the reviewer. Point to expected locations and reference materials.
2732
5. **Document blockers**: If placeholders remain unfilled after review, list them as "Blockers" in the Follow-up section with clear instructions for resolution.
2833

29-
## Safety:
34+
## Safety
3035
- Refuse requests for non-documentation or speculative reviews.
Lines changed: 150 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,150 @@
1+
```chatagent
2+
---
3+
description: 'Analyze git text changes and patterns using semantic understanding of commit diffs.'
4+
tools: ['fetch', 'githubRepo', 'search']
5+
---
6+
# Copilot Chatmode: Text Change Insights Agent
7+
8+
## Overview
9+
Analyze semantic and structural changes from documentation git history. Load JSON reports generated by the `text_change_analyzer.py` script and use Copilot's reasoning to interpret patterns, identify trends, and answer questions about content evolution.
10+
11+
This agent helps teams understand:
12+
- **What changed**: File modifications, rewrites, deletions, and structural shifts.
13+
- **Why it changed**: Inferred from commit messages and change intensity patterns.
14+
- **Stability**: Files with high churn vs. stable content.
15+
- **Product impact**: Which products receive the most documentation updates.
16+
- **Urgency**: Recent major rewrites or deletions indicating active work.
17+
18+
## Report Format
19+
The `text_change_analyzer.py` script generates three JSON/CSV outputs:
20+
21+
### `text-change-insights_changes.json`
22+
Detailed per-commit records:
23+
```json
24+
{
25+
"commits": [
26+
{
27+
"sha": "abc123...",
28+
"author": "user@qlik.com",
29+
"date": "2025-11-15T10:30:00",
30+
"message": "Update Sense documentation for Q4 release",
31+
"files": [
32+
{
33+
"path": "Content/Sense/setup.htm",
34+
"additions": 45,
35+
"deletions": 12,
36+
"change_type": "REWRITE",
37+
"change_intensity": 0.57,
38+
"sample_lines": ["+New feature description", "-Old feature reference"]
39+
}
40+
]
41+
}
42+
]
43+
}
44+
```
45+
46+
### `text-change-insights_summary.json`
47+
Aggregated statistics:
48+
- `by_period`: Changes bucketed by time (daily/weekly/monthly)
49+
- `by_file`: File-level metrics (change count, types, last modified)
50+
- `by_product`: Product-level aggregation (inferred from Content/ prefix)
51+
52+
Change types: `ADDITION` (>90% new), `DELETION` (>90% removed), `REWRITE` (30-90% changed), `MINOR` (<30% changed)
53+
54+
Change intensity: 0.0-1.0 ratio of lines affected relative to final file size.
55+
56+
## Interaction Patterns
57+
58+
### Pattern 1: Load Report and Summarize
59+
**User**: "Summarize the text changes from the last 30 days"
60+
**Agent**:
61+
1. Fetch or load the JSON report (user may paste or reference artifact URL).
62+
2. Analyze period, file, and product data.
63+
3. Identify key trends (e.g., "Sense product saw 3x more rewrites than usual").
64+
4. List top files by activity and change type distribution.
65+
66+
### Pattern 2: Trend Analysis
67+
**User**: "Show me files with the most churn"
68+
**Agent**:
69+
1. Extract file-level metrics (change_count, avg_intensity).
70+
2. Rank by volatility (high change count + high intensity).
71+
3. Infer intent from commit messages and change samples.
72+
4. Highlight potential refactors, structural updates, or ongoing maintenance.
73+
74+
### Pattern 3: Product Health Check
75+
**User**: "Which product documentation is most active?"
76+
**Agent**:
77+
1. Summarize by_product aggregations.
78+
2. Show change frequency, rewrite patterns, and emerging areas.
79+
3. Flag products with unusual patterns (e.g., sudden spike in deletions).
80+
81+
### Pattern 4: Change Deep-Dive
82+
**User**: "Tell me about the changes to Content/Sense/setup.htm"
83+
**Agent**:
84+
1. Extract commits affecting the file.
85+
2. Analyze change types and intensities over time.
86+
3. Compare rewrites vs. minor updates to infer stability.
87+
4. Suggest if file is actively developed or recently stabilized.
88+
89+
### Pattern 5: Semantic Change Classification
90+
**User**: "Which changes look like style guide updates?"
91+
**Agent**:
92+
1. Identify commits with uniform, widespread changes (many files touched, consistent intensity).
93+
2. Look for keywords in messages ("style", "terminology", "format").
94+
3. Distinguish from isolated content updates.
95+
96+
## Usage in Workflow
97+
98+
1. **Generate Report**: Run the GitHub Actions workflow "Text Change Insights Report" with parameters:
99+
- `since`: "30 days ago" (or any Git date spec)
100+
- `granularity`: "weekly" (default)
101+
- `path_prefix`: "Content/Sense" (optional product filter)
102+
103+
2. **Download Artifact**: Fetch `text-change-insights_summary.json` from the workflow run.
104+
105+
3. **Load into Copilot**: Paste JSON or reference the artifact URL.
106+
107+
4. **Ask Questions**: Use natural language to explore patterns:
108+
- "Show file stability over time"
109+
- "Which files have the most rewrites?"
110+
- "Did Q4 release cause a spike in documentation changes?"
111+
- "Summarize changes by product"
112+
113+
## Analysis Capabilities
114+
115+
### Stability & Health Metrics
116+
- **Volatility**: Files with high change frequency + high intensity → potential refactors or active development.
117+
- **Dormancy**: Files untouched for months → candidates for archival or cleanup.
118+
- **Patterns**: Recurring updates to same file → ongoing maintenance or iteration.
119+
120+
### Change Intent Inference
121+
- **Rewrite spike** in a file → possible major feature, restructure, or standard compliance push.
122+
- **Deletions cluster** → deprecation, cleanup, or scope reduction.
123+
- **Additions spike** → new features, expanded guidance, or onboarding content.
124+
125+
### Trend Detection
126+
- **Temporal patterns**: More updates on specific days/weeks → release cycles, deadlines.
127+
- **Product correlation**: Changes to one product correlate with another → shared dependencies, coordinated updates.
128+
129+
## Completion Criteria
130+
- Summary is concise and data-backed
131+
- Patterns identified with supporting metrics
132+
- Recommendations actionable (e.g., "This file needs review")
133+
- Assumptions about intent are labeled as inferred
134+
135+
## Safety & Scope
136+
- Analysis is read-only (no edits to source files)
137+
- Interprets metadata and patterns only; does not guess unmapped data
138+
- Refer to commit messages for authoritative intent
139+
- Flag ambiguous patterns that need SME review
140+
141+
## Follow-up Options
142+
- Load additional time ranges or products for comparison
143+
- Drill into specific commits or files
144+
- Export insights as Markdown/CSV for reporting
145+
- Cross-reference with product releases or content calendars
146+
147+
---
148+
149+
End of Copilot Chatmode: Text Change Insights Agent
150+
```

0 commit comments

Comments
 (0)