You have guessed the reason it's not showing correctly.
The best way to get the value to show, is to use a sheet worker to update it. This should do it:
on('change:psionic_ability', () => {
const section = 'SECTION';
repeatingSectionIds(`repeating_${section}`, idarray => {
const fieldnames = idarray.reduce((rows,id) => [...rows, `repeating_${section}_${id}_psionic_ability`], '');
getAttrs(['psionic_ability', ...fieldnames], v => {
const output = {};
idarray.forEach(id => {
output[`repeating_${section}_${id}_psionic_ability`] = v.psionic_ability;
});
setAttrs(output);
});
});
});
Just change one thing: the section at the start needs to be set to your repeating section name, the bit after repeating_.
If you have multiple external attributes you want to show in a repeating section, here's a worker for that. Just change the section variable at the start, like above, and add the attributes in the array below it. You only have to change those first 2 lines.
const section = `SECTION`;
const repeating_stats = ['psionic_ability'];
const changes = repeating_stats.reduce((str, stat) => `${str} change:${stat.toLowerCase()}`, 'sheet:opened');
on(changes, () => {
getSectionIDs(`repeating_${section}`, idarray => {
const fieldnames = idarray.reduce((rows,id) => [...rows, ...repeating_stats.map(stat => `repeating_${section}_${id}_${stat}`)], []);
getAttrs([...repeating_stats, ...fieldnames], v => {
const output = {};
idarray.forEach(id => {
repeating_stats.forEach(stat => {
output[`repeating_${section}_${id}_${stat}`] = v[stat];
});
});
setAttrs(output);
});
});
});