AI Power Tools for Sparx EA Docs Release 3.6.4
Applies to
  • Claude Code Runs fully
  • Claude Cowork Runs fully
  • Claude Desktop chat Runs fully
  • VS Code with GitHub Copilot Runs fully

prol-matrix

What it is for

Use it to read, share or export a Prolaborate relationship matrix. You end with a correct grid and what its cells mean. Nothing in the model changes.

prol-matrix reads, filters, shares and exports Prolaborate relationship matrices through the web interface. A relationship matrix compares two sets of elements and shows which pairs are connected: one set down the rows, the other across the columns, and a marker in a cell where a connector exists between that pair.

The skill finds the right matrix profile, reads what it compares, fetches the data, joins the response into a correct grid, and reports what the cells mean. It is read-only. A matrix profile is defined in Enterprise Architect, and a cell is an EA connector, so creating a profile or writing a cell is EA work and this skill refuses it.

Capabilities it uses

Capability Used for Without it
MCP server Not needed. No server operation is called Not needed
Computer use Not needed. It can see a browser but cannot click in one Not needed
Local code execution Not needed. The skill's scripts run inside the page, through browser control Not needed
Browser control Opening the Matrices list and the matrix view, reading the profile list, settings and data in the page, and driving Share and Download when you ask Not available. The skill has no other way to work. Writing a cell is refused whatever the capabilities

When to use it, and when not

Use it when the task names a relationship matrix, asks which elements are linked to which, or asks to export or share one. Run prol-start-here first in the session.

The task Answer
What does this matrix show? Yes, from the profile settings alone
Which applications support function X? (read and join) Yes
Export this matrix, or give me a link to it Yes, but only when you ask for it
Show only the rows that have something Yes. A display toggle only
Create a matrix of A against B No. The profile is authored in EA and appears in Prolaborate once it exists. Hand to the EA skills
Tick that cell, link these two elements, clear this cell No. It is an EA model write. Hand to ea-modeling, with ea-change-management for the baseline
What depends on this element? Not a matrix question. Use prol-impact-analysis

The matrix and impact skills behave oppositely. A matrix profile is authored in EA and keyed by its name, so renaming it breaks every saved link. An Analyzer view is created in Prolaborate and keyed by an identifier. Do not carry assumptions from one to the other.

How it works

  1. Run the preflight. (AI Power Tools, AI interprets) Per prol-start-here: signed in, live token, identity, version, repositories.
  2. Find the profile. AI Power Tools One read lists the matrix profiles with their name, type and whether each is supported. The AI skips any profile marked unsupported.
  3. Read what the profile compares. AI Power Tools The profile's settings return the source selector, target selector and link configuration. These map one to one onto the six header controls (source and type, target and type, relationship, direction), so this answers "what does this matrix show?" without fetching any data. It also shows how large the selectors are.
  4. Warn about size before fetching. AI The data call has no paging and returns every element record. The AI warns you before pulling a profile with large selectors.
  5. Fetch the data. AI Power Tools The response is three flat lists: source elements, target elements and connectors. There is no cell structure.
  6. Join into a grid by set membership. AI Power Tools For each connector the AI tests both end identifiers against both element lists and places the cell by what it finds. It never branches on a direction field.
  7. Check the invariant. AI Power Tools Every row is in the source list and every column is in the target list, and connectors that could not be placed are reported with their count. The AI also tests whether the two lists share any element.
  8. Report what the cells mean. AI The AI states the profile's source, target and relationship, says whether it counted connectors or filled cells, and reports unplaced connectors and any orientation uncertainty.
  9. Share or export, only on request. (AI driving the browser, you) The AI asks first, states what the file will be called, and does not enable the repository's share setting.

The join, and why it uses set membership

The response has no cell structure, and no direction field can be trusted to say which end of a connector is the row. This was measured across all eleven matrix profiles on the test tenant.

  • The profile's declared direction does not predict the data. Nine of eleven profiles declared "Both", yet their connectors came back in all three states. One profile declared "Both" while all 550 of its connectors said target-to-source and none started in the source list.
  • The per-connector direction is better, but "Both" is genuinely mixed. One profile split 29 of 58 each way.
  • Only set membership is reliable.

The rule, in words: for each connector, test whether the start is a source and the end a target, or the start a target and the end a source. In the first case the start is the row and the end the column; in the second the reverse. If neither holds, the connector is set aside as unplaced.

Points that decide whether the grid is right:

  • Test both ends as a pair. Deciding the row and the column independently looks equivalent and is not. When both ends fall in the same list it yields a cell at a coordinate that does not exist, because that element is a row and never a column. That fabricates data instead of losing it.
  • Report the unplaced connectors, never discard them. Those are real relationships the grid is not showing, and dropping them makes the matrix look complete while it under-reports.
  • Overlapping selectors are a stated limit. If both ends of a connector lie in the overlap of the two lists, both tests succeed, the first wins, nothing is reported as unplaced, and the placement is the direction guess the rule forbids. The AI detects this directly: if the source and target lists share any element, it says the grid's orientation is not determined by the data and reports that beside the result.
  • A cell can hold more than one connector. Two elements can be linked several times, by different relationship types or in both directions. The AI says whether it counted connectors or cells.
  • Use identifiers only. The numeric object identifiers, names and labels came back empty on every connector measured.
  • A wrongly joined grid does not error. It renders, looks reasonable and is wrong. This follows from the join logic and the measured direction data.
  • A technology value is not proof of ownership. A technology named beside a connector stereotype in the matrix data does not by itself show that the technology declares that stereotype. A technology can declare connector stereotypes (the Westbrook Bank reference technology declares Uses, Flows and realizes), so the AI checks the technology before saying either way.

The profile name is the identifier

The profile list returns the same string as both identifier and name. There is no stable identifier for a matrix profile anywhere in Prolaborate's interface. Three consequences:

  1. The view address encodes the name twice. A space in the name appears as %2520, not %20. The AI navigates from the list. If it must build the link, it encodes the already-encoded name.
  2. Renaming the profile in EA breaks every saved link. There is nothing stable to fall back on. The AI warns before you rename anything.
  3. A name containing /, #, ? or & is a hazard. Nothing stops an EA author creating one.

Filters, sharing and export

  • Hide empty source and hide empty target are display-only. With both on, the request behind the screen still returned all 184 source elements. They are a readability control and the AI does not offer them as a way to make a large matrix cheaper.
  • Display Label switches the cell text between element name and stereotype. It never changes the join.
  • Size. Element entries are full records of about 27 fields each (including notes, author, created, modified, status and parents). The payload scales with the element count, not with how many cells are filled. The largest profile read was over 1,000 rows by 61 columns with 758 connectors, so more than 62,000 cells, 99 percent empty. There is no paging.
  • Share produces a private link, gated by a repository-level setting. It behaves like a write even though it is a read: it mints a distribution link for your matrix. The AI confirms with you first and never enables the repository setting on your behalf. The call also fires on page load, so seeing it in a network log is not evidence that calling it is harmless.
  • Download writes a file. The AI asks first and says what the file will be called.
  • For share and download, the AI reads the screen as it goes.

Writes are refused

A matrix cell is a connector. Setting one creates a connector and clearing one deletes it. These are EA model writes that happen to be visible through a matrix. There is no dry run and no undo. The AI does not write matrix cells with a baseline, with confirmation, or "just one". It tells you that writing is EA work and routes to the EA skills, which own the baseline that must precede a model change.

What you get

  • The list of supported matrix profiles, or a plain description of what one compares, from its settings alone.
  • A correctly joined grid, with the connectors placed in cells, a statement of whether counts are connectors or cells, and any unplaced connectors and overlap named.
  • On request, a share link or a file, after confirmation.
  • A refusal, with a pointer to the EA skills, for any write.

Tools it relies on

  • Browser control, to open the Matrices list and the matrix view, and to drive Share and Download when asked
  • Prolaborate's matrix profile list, profile settings, matrix data, access check, share setting and share link
  • The preflight in prol-start-here

No server operation is used. Writing a cell would be an EA model write through Connectors, which is why the request is routed to the EA skills.

Sample prompts

  1. Lists the supported profiles.

  2. Answers from the profile settings alone (source, target, relationship, direction) with no data fetch. The profile name is an illustration; your repository's profiles will differ.

  3. Fetches the data, joins by set membership and lists the intersecting cells.

  4. States whether it counted connectors or filled cells, and reports unplaced connectors and any overlap between the source and target lists.

  5. Says matrix profiles are authored in EA, not Prolaborate, and hands off to the EA skills.

  6. Confirms with you before creating a share link, and does not enable the repository setting.

Model Fit Why
Claude Fable 5.1 Capable Strongest at noticing that a populated grid might be transposed, but the logic is mostly deterministic
Claude Opus 5.5 Recommended Reliable on the join, the invariant and the refusal rules, and handles the "what do the cells mean" reporting well
Claude Sonnet 5.5 Recommended The task is procedural with a precise join. Check the invariant output on large matrices
Claude Haiku 4.5 Capable for simple reads Fine for listing profiles and reading settings. Likelier to branch on direction, so verify any grid it joins

Ratings are guidance based on the kind of reasoning the skill needs, not measured benchmarks.

Checking accuracy and completeness

  1. The invariant, on every run. Correct: every row is in the source list, every column is in the target list, and unplaced connectors are reported with their count. These are properties of the AI's own output and can be checked without a known-good answer.
  2. Connector accounting. The connectors in placed cells plus the unplaced connectors equal the connectors in the response. A mismatch means connectors were dropped or invented.
  3. Compare with the screen. Open the matrix in Prolaborate with the hide-empty toggles off, and spot-check several filled cells against the grid the AI reports. For a transposed join, rows and columns will be swapped relative to the screen.
  4. Overlap test. If the source and target lists share any element, the AI must say the orientation is not determined by the data. Red flag: it presents such a grid as certain.
  5. Direction-agnostic. Run it on a profile whose connectors are all target-to-source, and on one where the direction is "Both" on every connector. Both must pass the invariant. A run that passes only one is almost certainly branching on direction. If no repository has the mixed "Both" case, build one in a scratch EA model, never in a customer repository.
  6. Sizing behavior. On a profile with over 1,000 rows the AI reads the settings first and warns about the response size. Red flag: a blind fetch, or a timeout reported as a permissions problem.
  7. Refusals hold. Ask for a link between two elements and a cleared cell. Both must be refused and routed to the EA skills.

The skill ships 20 acceptance cases. The all-reversed and the mixed-"Both" cases matter most, because a bad join does not fail loudly.

Limitations

  • One identity. Everything was verified as a Super Admin. The element payload carries notes and author on every row, so a restricted user may legitimately see less.
  • Overlapping selectors cannot be resolved from membership alone.
  • No paging.
  • Renaming a profile in EA breaks saved links, because the name is the identifier.

See also Limitations and known issues.